diff options
| author | William Harrington <kb0iic@berzerkula.org> | 2014-11-27 16:29:31 -0600 | 
|---|---|---|
| committer | William Harrington <kb0iic@berzerkula.org> | 2014-11-27 16:29:31 -0600 | 
| commit | 7df987a652b93d55dd8eca363706d3bacc469b55 (patch) | |
| tree | 17f84ce0fee76a3a0476b714eae09486ab2470e6 /stylesheets/lfs-xsl/docbook-xsl-snapshot/fo | |
Diffstat (limited to 'stylesheets/lfs-xsl/docbook-xsl-snapshot/fo')
167 files changed, 70193 insertions, 0 deletions
diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/entries b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/entries new file mode 100644 index 0000000..6ebbf42 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/entries @@ -0,0 +1,717 @@ +8 + +dir +8545 +svn://svn.linuxfromscratch.org/LFS/trunk/BOOK/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo +svn://svn.linuxfromscratch.org/LFS + + + +2007-09-09T08:55:14.279386Z +8369 +manuel + + +svn:special svn:externals svn:needs-lock + + + + + + + + + + + +4aa44e1e-78dd-0310-a6d2-fbcd4c07a689 + +titlepage.templates.xsl +file + + + + +2008-05-23T19:59:58.000000Z +8713395199639160cb6f5e685acbe011 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +inline.xsl +file + + + + +2008-05-23T19:59:58.000000Z +00cf77940b260873aee6f942c28c445b +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +autotoc.xsl +file + + + + +2008-05-23T19:59:58.000000Z +914e162256c251df451faa18d3c1aa0d +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +profile-docbook.xsl +file + + + + +2008-05-23T19:59:58.000000Z +b407fe8f56ec8d4cb1eb3e04a5d2d050 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +spaces.xsl +file + + + + +2008-05-23T19:59:58.000000Z +6feb767aceda01a54c822eb779104cdd +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +formal.xsl +file + + + + +2008-05-23T19:59:58.000000Z +00361adb86faedcb8882ea1e630ee3d6 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +docbook.xsl +file + + + + +2008-05-23T19:59:58.000000Z +5be8273f92f3e32a5506363bc70809a7 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +fop.xsl +file + + + + +2008-05-23T19:59:58.000000Z +471703c7965b4e4137ea02e43f510ae3 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +division.xsl +file + + + + +2008-05-23T19:59:58.000000Z +2e58df32e9035bb93301f21b4ed351ce +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +toc.xsl +file + + + + +2008-05-23T19:59:58.000000Z +ff3bdbf68afa07afc0ef8a978a044689 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +autoidx-kosek.xsl +file + + + + +2008-05-23T19:59:58.000000Z +e676fe460984e9ec914e9a659c6079a9 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +biblio-iso690.xsl +file + + + + +2008-05-23T19:59:58.000000Z +ad2391061dc177d87fb67356403a4e33 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +table.xsl +file + + + + +2008-05-23T19:59:58.000000Z +2a04b061ea0b42cb4c7ee1a269935e67 +2007-09-09T08:55:14.279386Z +8369 +manuel +has-props + +block.xsl +file + + + + +2008-05-23T19:59:58.000000Z +f9c70d118f3ee99ae09dca15164f0e51 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +xep.xsl +file + + + + +2008-05-23T19:59:58.000000Z +5c729f77fd28ceea621290409b8337f7 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +fo-rtf.xsl +file + + + + +2008-05-23T19:59:58.000000Z +ee2ee681cdb6a1ca3b319e1ef644d14c +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +refentry.xsl +file + + + + +2008-05-23T19:59:58.000000Z +efdf9736ed0bd4c7f67ac90153680e40 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +admon.xsl +file + + + + +2008-05-23T19:59:58.000000Z +2949bc3812ec2f0d0a470ea39e9586a9 +2007-09-09T08:55:14.279386Z +8369 +manuel +has-props + +qandaset.xsl +file + + + + +2008-05-23T19:59:58.000000Z +e82ee3bbcc79172f8ca1386a6616c3d4 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +graphics.xsl +file + + + + +2008-05-23T19:59:58.000000Z +8340035dfdf8d06c7c603436d1c56a48 +2007-09-09T08:55:14.279386Z +8369 +manuel +has-props + +component.xsl +file + + + + +2008-05-23T19:59:58.000000Z +8228c775125f34c01375fdac503f1216 +2007-07-21T15:00:15.805396Z +8228 +manuel +has-props + +callout.xsl +file + + + + +2008-05-23T19:59:58.000000Z +bf42e48adf440d36f7a069cb430d5b51 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +fop1.xsl +file + + + + +2008-05-23T19:59:58.000000Z +5e987807d61b1696648576d7f36f4f0b +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +htmltbl.xsl +file + + + + +2008-05-23T19:59:58.000000Z +1c83ecc7a2c0a1129e4b6aca30e40308 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +highlight.xsl +file + + + + +2008-05-23T19:59:58.000000Z +1f9aa50e7cf83a9e6962cd211e1d7c11 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +index.xsl +file + + + + +2008-05-23T19:59:58.000000Z +7c0a002ed65cae6b1c9679fb139e5abb +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +synop.xsl +file + + + + +2008-05-23T19:59:58.000000Z +d318bc3662cb97f85509fd9c2f6cc1a5 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +ebnf.xsl +file + + + + +2008-05-23T19:59:58.000000Z +3e1dfe755519a64572aabc9be6abb4d4 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +autoidx.xsl +file + + + + +2008-05-23T19:59:58.000000Z +b1ce0ed7e77e6902b9df96338b8bf48e +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +pdf2index +file + + + + +2008-05-23T19:59:58.000000Z +554530fa5edf943679779d9fc310792e +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +axf.xsl +file + + + + +2008-05-23T19:59:58.000000Z +9e5579da79cac93eeb82cc3b8ee07d83 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +titlepage.xsl +file + + + + +2008-05-23T19:59:58.000000Z +d6c0b4902b9a5f3890fcfae94986b2b2 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +autoidx-ng.xsl +file + + + + +2008-05-23T19:59:58.000000Z +459262dc165e0aebbd86108397caef2f +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +autoidx-kimber.xsl +file + + + + +2008-05-23T19:59:58.000000Z +cfaa44f47963c892bb052eb65fdc25fe +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +ptc.xsl +file + + + + +2008-05-23T19:59:58.000000Z +dd81ad15828f35ca788939a317639124 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +sections.xsl +file + + + + +2008-05-23T19:59:58.000000Z +21f3abb38683801d9055ae7da58d1928 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +math.xsl +file + + + + +2008-05-23T19:59:58.000000Z +b8c692334a96233bcbebe3cf9160c116 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +info.xsl +file + + + + +2008-05-23T19:59:58.000000Z +748f4a9351c4cdbccbf3fdc9a2f0e7ef +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +passivetex.xsl +file + + + + +2008-05-23T19:59:58.000000Z +08c9ff024b2205f2c01f9c9f3aeca3f9 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +footnote.xsl +file + + + + +2008-05-23T19:59:58.000000Z +cb3b0a7ba86e39c2b292225350d075de +2007-09-09T08:55:14.279386Z +8369 +manuel +has-props + +annotations.xsl +file + + + + +2008-05-23T19:59:58.000000Z +273bd2664d9cca89b0cf3a12705b405c +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +pagesetup.xsl +file + + + + +2008-05-23T19:59:58.000000Z +dee06f5d4446d1b6ba5b35a8f2026171 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +lists.xsl +file + + + + +2008-05-23T19:59:58.000000Z +4cc13e7d123aed8679c671bd02b58a43 +2007-07-21T15:00:15.805396Z +8228 +manuel +has-props + +biblio.xsl +file + + + + +2008-05-23T19:59:58.000000Z +1478af511b421bbe895b1a3b52389218 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +param.xsl +file + + + + +2008-05-23T19:59:58.000000Z +52488622b8043351052c963263e87683 +2007-09-09T08:55:14.279386Z +8369 +manuel +has-props + +task.xsl +file + + + + +2008-05-23T19:59:58.000000Z +1416c6d0352f6a83c1a430a1ca2f53b5 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +glossary.xsl +file + + + + +2008-05-23T19:59:58.000000Z +3954008d57069917c111e3ed20a38078 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +fo.xsl +file + + + + +2008-05-23T19:59:58.000000Z +405df8113c5c320357d81ffd9b1718d3 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +xref.xsl +file + + + + +2008-05-23T19:59:58.000000Z +1d55c41d0a680a1971d7f03b65694950 +2007-07-21T15:00:15.805396Z +8228 +manuel +has-props + +titlepage.templates.xml +file + + + + +2008-05-23T19:59:58.000000Z +4f677fee358d2ac5c32573b54ff113fc +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +keywords.xsl +file + + + + +2008-05-23T19:59:58.000000Z +b3c22df23ca37b6c0a4d9c964bd41133 +2007-07-05T21:18:33.287533Z +8196 +manuel +has-props + +pi.xsl +file + + + + +2008-05-23T19:59:58.000000Z +4afa51be21cb28363bddea1f296166b5 +2007-09-09T08:55:14.279386Z +8369 +manuel +has-props + +verbatim.xsl +file + + + + +2008-05-23T19:59:58.000000Z +686a48fe31a166a657a5082c8ca7762e +2007-07-21T15:00:15.805396Z +8228 +manuel +has-props + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/format b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/format new file mode 100644 index 0000000..45a4fb7 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/format @@ -0,0 +1 @@ +8 diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/admon.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/admon.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/admon.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/annotations.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/annotations.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/annotations.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx-kimber.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx-kimber.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx-kimber.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx-kosek.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx-kosek.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx-kosek.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx-ng.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx-ng.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx-ng.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autoidx.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autotoc.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autotoc.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/autotoc.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/axf.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/axf.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/axf.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/biblio-iso690.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/biblio-iso690.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/biblio-iso690.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/biblio.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/biblio.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/biblio.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/block.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/block.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/block.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/callout.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/callout.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/callout.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/component.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/component.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/component.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/division.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/division.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/division.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/docbook.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/docbook.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/docbook.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/ebnf.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/ebnf.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/ebnf.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fo-rtf.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fo-rtf.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fo-rtf.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fo.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fo.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fo.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/footnote.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/footnote.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/footnote.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fop.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fop.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fop.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fop1.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fop1.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/fop1.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/formal.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/formal.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/formal.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/glossary.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/glossary.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/glossary.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/graphics.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/graphics.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/graphics.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/highlight.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/highlight.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/highlight.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/htmltbl.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/htmltbl.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/htmltbl.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/index.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/index.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/index.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/info.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/info.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/info.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/inline.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/inline.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/inline.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/keywords.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/keywords.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/keywords.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/lists.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/lists.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/lists.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/math.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/math.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/math.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/pagesetup.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/pagesetup.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/pagesetup.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/param.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/param.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/param.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/passivetex.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/passivetex.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/passivetex.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/pdf2index.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/pdf2index.svn-base new file mode 100644 index 0000000..0d0a74e --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/pdf2index.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/pi.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/pi.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/pi.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/profile-docbook.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/profile-docbook.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/profile-docbook.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/ptc.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/ptc.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/ptc.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/qandaset.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/qandaset.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/qandaset.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/refentry.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/refentry.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/refentry.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/sections.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/sections.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/sections.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/spaces.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/spaces.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/spaces.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/synop.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/synop.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/synop.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/table.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/table.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/table.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/task.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/task.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/task.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/titlepage.templates.xml.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/titlepage.templates.xml.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/titlepage.templates.xml.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/titlepage.templates.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/titlepage.templates.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/titlepage.templates.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/titlepage.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/titlepage.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/titlepage.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/toc.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/toc.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/toc.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/verbatim.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/verbatim.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/verbatim.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/xep.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/xep.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/xep.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/xref.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/xref.xsl.svn-base new file mode 100644 index 0000000..e7130f8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/prop-base/xref.xsl.svn-base @@ -0,0 +1,5 @@ +K 12 +svn:keywords +V 23 +Author Date Revision Id +END diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/admon.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/admon.xsl.svn-base new file mode 100644 index 0000000..9662ac5 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/admon.xsl.svn-base @@ -0,0 +1,130 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:template match="note|important|warning|caution|tip"> +  <xsl:choose> +    <xsl:when test="$admon.graphics != 0"> +      <xsl:call-template name="graphical.admonition"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="nongraphical.admonition"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="admon.graphic.width"> +  <xsl:param name="node" select="."/> +  <xsl:text>36pt</xsl:text> +</xsl:template> + +<xsl:template name="admon.graphic"> +  <xsl:param name="node" select="."/> + +  <xsl:variable name="filename"> +    <xsl:value-of select="$admon.graphics.path"/> +    <xsl:choose> +      <xsl:when test="local-name($node)='note'">note</xsl:when> +      <xsl:when test="local-name($node)='warning'">warning</xsl:when> +      <xsl:when test="local-name($node)='caution'">caution</xsl:when> +      <xsl:when test="local-name($node)='tip'">tip</xsl:when> +      <xsl:when test="local-name($node)='important'">important</xsl:when> +      <xsl:otherwise>note</xsl:otherwise> +    </xsl:choose> +    <xsl:value-of select="$admon.graphics.extension"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0 +                    or $fop.extensions != 0 +                    or $arbortext.extensions != 0"> +      <xsl:value-of select="$filename"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>url(</xsl:text> +      <xsl:value-of select="$filename"/> +      <xsl:text>)</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="graphical.admonition"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="graphic.width"> +     <xsl:apply-templates select="." mode="admon.graphic.width"/> +  </xsl:variable> + +  <fo:block id="{$id}" +            xsl:use-attribute-sets="graphical.admonition.properties"> +    <fo:list-block provisional-distance-between-starts="{$graphic.width} + 18pt" +                    provisional-label-separation="18pt"> +      <fo:list-item> +          <fo:list-item-label end-indent="label-end()"> +            <fo:block> +              <fo:external-graphic width="auto" height="auto" +                                         content-width="{$graphic.width}" > +                <xsl:attribute name="src"> +                  <xsl:call-template name="admon.graphic"/> +                </xsl:attribute> +              </fo:external-graphic> +            </fo:block> +          </fo:list-item-label> +          <fo:list-item-body start-indent="body-start()"> +            <xsl:if test="$admon.textlabel != 0 or title or info/title"> +              <fo:block xsl:use-attribute-sets="admonition.title.properties"> +                <xsl:apply-templates select="." mode="object.title.markup"> +		  <xsl:with-param name="allow-anchors" select="1"/> +		</xsl:apply-templates> +              </fo:block> +            </xsl:if> +            <fo:block xsl:use-attribute-sets="admonition.properties"> +              <xsl:apply-templates/> +            </fo:block> +          </fo:list-item-body> +      </fo:list-item> +    </fo:list-block> +  </fo:block> +</xsl:template> + +<xsl:template name="nongraphical.admonition"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}" +            xsl:use-attribute-sets="nongraphical.admonition.properties"> +    <xsl:if test="$admon.textlabel != 0 or title or info/title"> +      <fo:block keep-with-next.within-column='always' +                xsl:use-attribute-sets="admonition.title.properties"> +         <xsl:apply-templates select="." mode="object.title.markup"> +	   <xsl:with-param name="allow-anchors" select="1"/> +	 </xsl:apply-templates> +      </fo:block> +    </xsl:if> + +    <fo:block xsl:use-attribute-sets="admonition.properties"> +      <xsl:apply-templates/> +    </fo:block> +  </fo:block> +</xsl:template> + +<xsl:template match="note/title"></xsl:template> +<xsl:template match="important/title"></xsl:template> +<xsl:template match="warning/title"></xsl:template> +<xsl:template match="caution/title"></xsl:template> +<xsl:template match="tip/title"></xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/annotations.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/annotations.xsl.svn-base new file mode 100644 index 0000000..e2e1449 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/annotations.xsl.svn-base @@ -0,0 +1,18 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:template match="annotation"/> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx-kimber.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx-kimber.xsl.svn-base new file mode 100644 index 0000000..0b01823 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx-kimber.xsl.svn-base @@ -0,0 +1,178 @@ +<?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 sep '" "'> +<!-- 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:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService" +                exclude-result-prefixes="k" +                version="1.0"> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen.  --> +<!-- ==================================================================== --> +<!--   *** THIS MODULE ONLY WORKS WITH SAXON 6 OR SAXON 8 ***             --> +<!-- ==================================================================== --> + +<xsl:include href="../common/autoidx-kimber.xsl"/> + +<!-- Java sort apparently works only on lang part, not country --> +<xsl:param name="sort.lang"> +  <xsl:choose> +    <xsl:when test="contains(⟨, '-')"> +      <xsl:value-of select="substring-before(⟨, '-')"/> +    </xsl:when> +    <xsl:when test="contains(⟨, '_')"> +      <xsl:value-of select="substring-before(⟨, '_')"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="⟨"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:template name="generate-kimber-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="not(contains($vendor, 'SAXON '))"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> +      <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="not(function-available('k:getIndexGroupKey'))"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> +      <xsl:text>Innodata Isogen 
Java extensions for </xsl:text> +      <xsl:text>internationalized indexes. 
Install those </xsl:text> +      <xsl:text>extensions, or use a different index method.
</xsl:text> +      <xsl:text>For more information, see:
</xsl:text> +      <xsl:text>http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:variable name="role"> +    <xsl:if test="$index.on.role != 0"> +      <xsl:value-of select="@role"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:if test="$index.on.type != 0"> +      <xsl:value-of select="@type"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="terms" +                select="//indexterm[count(.|key('k-group', +                   k:getIndexGroupKey(⟨, &primary;)) +                   [&scope;][1]) = 1 +                   and not(@class = 'endofrange')]"/> + +  <xsl:variable name="alphabetical" +                select="$terms[not(starts-with( +                k:getIndexGroupKey(⟨, &primary;), +                '#NUMERIC' +                ))]"/> + +  <xsl:variable name="others" +                select="$terms[starts-with( +                k:getIndexGroupKey(⟨, &primary;), +                '#NUMERIC' +                )]"/> + +  <fo:block> +    <xsl:if test="$others"> +      <xsl:call-template name="indexdiv.title"> +        <xsl:with-param name="titlecontent"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'index symbols'"/> +          </xsl:call-template> +        </xsl:with-param> +      </xsl:call-template> + +      <fo:block> +        <xsl:apply-templates select="$others" +                             mode="index-symbol-div"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort lang="{$sort.lang}" +              select="k:getIndexGroupSortKey(⟨, +                      k:getIndexGroupKey(⟨, &primary;))"/> +        </xsl:apply-templates> +      </fo:block> +    </xsl:if> + +    <xsl:apply-templates select="$alphabetical" +                         mode="index-div-kimber"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort lang="{$sort.lang}" +             select="k:getIndexGroupSortKey(⟨, +                     k:getIndexGroupKey(⟨, &primary;))"/> +    </xsl:apply-templates> +  </fo:block> + +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-kimber"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" +          select="k:getIndexGroupKey(⟨, &primary;)"/> + +  <xsl:variable name="label" +          select="k:getIndexGroupLabel(⟨, $key)"/> + +  <xsl:if test="key('k-group', $key)[&scope;] +                [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> +    <fo:block> +      <xsl:call-template name="indexdiv.title"> +        <xsl:with-param name="titlecontent"> +          <xsl:value-of select="$label"/> +        </xsl:with-param> +      </xsl:call-template> +      <fo:block> +        <xsl:apply-templates select="key('k-group', $key)[&scope;] +                            [count(.|key('primary', &primary;)[&scope;] +                            [1])=1]" +                             mode="index-primary"> +          <xsl:sort select="&primary;" lang="{$sort.lang}"/> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +        </xsl:apply-templates> +      </fo:block> +    </fo:block> +  </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx-kosek.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx-kosek.xsl.svn-base new file mode 100644 index 0000000..bfb17b1 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx-kosek.xsl.svn-base @@ -0,0 +1,150 @@ +<?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 sep '" "'> +<!-- Documents using the kimber index method must have a lang attribute --> +<!-- Only one of these should be present in the entity --> + +<!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:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                xmlns:i="urn:cz-kosek:functions:index" +                xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" +                xmlns:func="http://exslt.org/functions" +                xmlns:exslt="http://exslt.org/common" +                extension-element-prefixes="func exslt" +                exclude-result-prefixes="func exslt i l" +                version="1.0"> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "kosek" method contributed by Jirka Kosek. --> + +<xsl:include href="../common/autoidx-kosek.xsl"/> + +<xsl:template name="generate-kosek-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="contains($vendor, 'libxslt')"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kosek' index method does not </xsl:text> +      <xsl:text>work with the xsltproc XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="contains($vendor, 'Saxonica')"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kosek' index method does not </xsl:text> +      <xsl:text>work with the Saxon 8 XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + + +  <xsl:if test="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
</xsl:text> +      <xsl:text>index extension functions be imported:
</xsl:text> +      <xsl:text>  xsl:import href="common/autoidx-kosek.xsl"</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:variable name="role"> +    <xsl:if test="$index.on.role != 0"> +      <xsl:value-of select="@role"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:if test="$index.on.type != 0"> +      <xsl:value-of select="@type"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="terms" +                select="//indexterm[count(.|key('group-code', +                                          i:group-index(&primary;)) +                                          [&scope;][1]) = 1 +                                and not(@class = 'endofrange')]"/> +  <fo:block> +    <xsl:apply-templates select="$terms" mode="index-div-kosek"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="i:group-index(&primary;)" data-type="number"/> +    </xsl:apply-templates> +  </fo:block> +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-kosek"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" +                select="i:group-index(&primary;)"/> + +  <xsl:variable name="lang"> +    <xsl:call-template name="l10n.language"/> +  </xsl:variable> + +  <xsl:if test="key('group-code', $key)[&scope;] +                [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> +    <fo:block> +      <xsl:call-template name="indexdiv.title"> +        <xsl:with-param name="titlecontent"> +          <xsl:choose> +            <xsl:when test="$key = 0"> +              <xsl:call-template name="gentext"> +                <xsl:with-param name="key" select="'index symbols'"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:otherwise> +              <xsl:value-of select="i:group-letter($key)"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +      </xsl:call-template> +      <fo:block> +        <xsl:apply-templates select="key('group-code', $key)[&scope;] +                                     [count(.|key('primary', &primary;) +                                     [&scope;][1])=1]" +                             mode="index-primary"> +          <xsl:sort select="&primary;" lang="{$lang}"/> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +        </xsl:apply-templates> +      </fo:block> +    </fo:block> +  </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx-ng.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx-ng.xsl.svn-base new file mode 100644 index 0000000..57884cc --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx-ng.xsl.svn-base @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                version="1.0"> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     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/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx.xsl.svn-base new file mode 100644 index 0000000..bf42732 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autoidx.xsl.svn-base @@ -0,0 +1,1310 @@ +<?xml version="1.0"?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY % common.entities SYSTEM "../common/entities.ent"> +%common.entities; +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                xmlns:exslt="http://exslt.org/common" +                extension-element-prefixes="exslt" +                exclude-result-prefixes="exslt" +                version="1.0"> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "basic" method derived from Jeni Tennison's work. --> +<!-- The "kosek" method contributed by Jirka Kosek. --> +<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. --> + +<!-- Importing module for kimber or kosek method overrides one of these --> +<xsl:param name="kimber.imported" select="0"/> +<xsl:param name="kosek.imported" select="0"/> + +<!-- These keys used primary in all methods --> +<xsl:key name="letter" +         match="indexterm" +         use="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> + +<xsl:key name="primary" +         match="indexterm" +         use="&primary;"/> + +<xsl:key name="secondary" +         match="indexterm" +         use="concat(&primary;, &sep;, &secondary;)"/> + +<xsl:key name="tertiary" +         match="indexterm" +         use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> + +<xsl:key name="endofrange" +         match="indexterm[@class='endofrange']" +         use="@startref"/> + +<xsl:key name="see-also" +         match="indexterm[seealso]" +         use="concat(&primary;, &sep;,  +                     &secondary;, &sep;,  +                     &tertiary;, &sep;, seealso)"/> + +<xsl:key name="see" +         match="indexterm[see]" +         use="concat(&primary;, &sep;,  +                     &secondary;, &sep;,  +                     &tertiary;, &sep;, see)"/> + + +<xsl:template name="generate-index"> +  <xsl:param name="scope" select="(ancestor::book|/)[last()]"/> + +  <xsl:choose> +    <xsl:when test="$index.method = 'kosek'"> +      <xsl:call-template name="generate-kosek-index"> +        <xsl:with-param name="scope" select="$scope"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$index.method = 'kimber'"> +      <xsl:call-template name="generate-kimber-index"> +        <xsl:with-param name="scope" select="$scope"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:call-template name="generate-basic-index"> +        <xsl:with-param name="scope" select="$scope"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> +       +<xsl:template name="generate-basic-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="role"> +    <xsl:if test="$index.on.role != 0"> +      <xsl:value-of select="@role"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:if test="$index.on.type != 0"> +      <xsl:value-of select="@type"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="terms" +                select="//indexterm +                        [count(.|key('letter', +                          translate(substring(&primary;, 1, 1), +                             &lowercase;, +                             &uppercase;)) +                          [&scope;][1]) = 1 +                          and not(@class = 'endofrange')]"/> + +  <xsl:variable name="alphabetical" +                select="$terms[contains(concat(&lowercase;, &uppercase;), +                                        substring(&primary;, 1, 1))]"/> + +  <xsl:variable name="others" select="$terms[not(contains( +                                        concat(&lowercase;, +                                        &uppercase;), +                                        substring(&primary;, 1, 1)))]"/> +  <fo:block> +    <xsl:if test="$others"> +      <xsl:call-template name="indexdiv.title"> +        <xsl:with-param name="titlecontent"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'index symbols'"/> +          </xsl:call-template> +        </xsl:with-param> +      </xsl:call-template> + +      <fo:block> +        <xsl:apply-templates select="$others[count(.|key('primary', +                                     &primary;)[&scope;][1]) = 1]" +                             mode="index-symbol-div"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort select="translate(&primary;, &lowercase;,  +                            &uppercase;)"/> +        </xsl:apply-templates> +      </fo:block> +    </xsl:if> + +    <xsl:apply-templates select="$alphabetical[count(.|key('letter', +                                 translate(substring(&primary;, 1, 1), +                                           &lowercase;,&uppercase;)) +                                           [&scope;][1]) = 1]" +                         mode="index-div-basic"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </fo:block> +</xsl:template> + +<!-- This template not used if fo/autoidx-kosek.xsl is imported --> +<xsl:template name="generate-kosek-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="contains($vendor, 'libxslt')"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kosek' index method does not </xsl:text> +      <xsl:text>work with the xsltproc XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + + +  <xsl:if test="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
</xsl:text> +      <xsl:text>kosek index extensions be imported:
</xsl:text> +      <xsl:text>  xsl:import href="fo/autoidx-kosek.xsl"</xsl:text> +    </xsl:message> +  </xsl:if> + +</xsl:template> + + +<!-- This template not used if fo/autoidx-kimber.xsl is imported --> +<xsl:template name="generate-kimber-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="not(contains($vendor, 'SAXON '))"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> +      <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="$kimber.imported = 0"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the
</xsl:text> +      <xsl:text>kimber index extensions be imported:
</xsl:text> +      <xsl:text>  xsl:import href="fo/autoidx-kimber.xsl"</xsl:text> +    </xsl:message> +  </xsl:if> + +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-basic"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" +                select="translate(substring(&primary;, 1, 1), +                         &lowercase;,&uppercase;)"/> + +  <xsl:if test="key('letter', $key)[&scope;] +                [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> +    <fo:block> +      <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)"> +        <xsl:call-template name="indexdiv.title"> +          <xsl:with-param name="titlecontent"> +            <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:block xsl:use-attribute-sets="index.entry.properties"> +        <xsl:apply-templates select="key('letter', $key)[&scope;] +                                     [count(.|key('primary', &primary;) +                                     [&scope;][1])=1]" +                             mode="index-primary"> +          <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +        </xsl:apply-templates> +      </fo:block> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-symbol-div"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" +                select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> + +  <fo:block xsl:use-attribute-sets="index.entry.properties"> +    <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]" +                         mode="index-primary"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </fo:block> +</xsl:template> + +<xsl:template match="indexterm" mode="index-primary"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" select="&primary;"/> +  <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:block> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute> +    </xsl:if> +    <xsl:value-of select="primary"/> + +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:if test="$refs[not(see) and not(secondary)]"> +          <xsl:copy-of select="$term.separator"/> +          <xsl:variable name="primary" select="&primary;"/> +          <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/> +          <rx:page-index list-separator="{$number.separator}" +                         range-separator="{$range.separator}"> +            <xsl:if test="$refs[@significance='preferred'][not(see) and not(secondary)]"> +              <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties" +                ref-key="{$primary.significant}"/> +            </xsl:if> +            <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see) and not(secondary)]"> +              <rx:index-item xsl:use-attribute-sets="xep.index.item.properties" +                ref-key="{$primary}"/> +            </xsl:if> +          </rx:page-index>         +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:variable name="page-number-citations"> +          <xsl:for-each select="$refs[not(see)  +                                and not(secondary)]"> +            <xsl:apply-templates select="." mode="reference"> +              <xsl:with-param name="scope" select="$scope"/> +              <xsl:with-param name="role" select="$role"/> +              <xsl:with-param name="type" select="$type"/> +              <xsl:with-param name="position" select="position()"/> +            </xsl:apply-templates> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:choose> +          <xsl:when test="$passivetex.extensions != '0'"> +            <fotex:sort xmlns:fotex="http://www.tug.org/fotex"> +              <xsl:copy-of select="$page-number-citations"/> +            </fotex:sort> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$page-number-citations"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:if test="$refs[not(secondary)]/*[self::see]"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]" +                           mode="index-see"> +         <xsl:with-param name="scope" select="$scope"/> +         <xsl:with-param name="role" select="$role"/> +         <xsl:with-param name="type" select="$type"/> +         <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </xsl:if> + +  </fo:block> + +  <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]"> +    <fo:block start-indent="1pc"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]" +                           mode="index-seealso"> +         <xsl:with-param name="scope" select="$scope"/> +         <xsl:with-param name="role" select="$role"/> +         <xsl:with-param name="type" select="$type"/> +         <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +      <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]" +                           mode="index-secondary"> +       <xsl:with-param name="scope" select="$scope"/> +       <xsl:with-param name="role" select="$role"/> +       <xsl:with-param name="type" select="$type"/> +       <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-secondary"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/> +  <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:block> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute> +    </xsl:if> +    <xsl:value-of select="secondary"/> + +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:if test="$refs[not(see) and not(tertiary)]"> +          <xsl:copy-of select="$term.separator"/> +          <xsl:variable name="primary" select="&primary;"/> +          <xsl:variable name="secondary" select="&secondary;"/> +          <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/> +          <rx:page-index list-separator="{$number.separator}" +                         range-separator="{$range.separator}"> +            <xsl:if test="$refs[@significance='preferred'][not(see) and not(tertiary)]"> +              <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary.significant"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +            <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see) and not(tertiary)]"> +              <rx:index-item xsl:use-attribute-sets="xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +          </rx:page-index> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:variable name="page-number-citations"> +          <xsl:for-each select="$refs[not(see)  +                                and not(tertiary)]"> +            <xsl:apply-templates select="." mode="reference"> +              <xsl:with-param name="scope" select="$scope"/> +              <xsl:with-param name="role" select="$role"/> +              <xsl:with-param name="type" select="$type"/> +              <xsl:with-param name="position" select="position()"/> +            </xsl:apply-templates> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:choose> +          <xsl:when test="$passivetex.extensions != '0'"> +            <fotex:sort xmlns:fotex="http://www.tug.org/fotex"> +              <xsl:copy-of select="$page-number-citations"/> +            </fotex:sort> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$page-number-citations"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:if test="$refs[not(tertiary)]/*[self::see]"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]" +                           mode="index-see"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +        <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </xsl:if> + +  </fo:block> + +  <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]"> +    <fo:block start-indent="2pc"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]" +                           mode="index-seealso"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +      <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]"  +                           mode="index-tertiary"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-tertiary"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> +  <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:block> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute> +    </xsl:if> +    <xsl:value-of select="tertiary"/> + +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:if test="$refs[not(see)]"> +          <xsl:copy-of select="$term.separator"/> +          <xsl:variable name="primary" select="&primary;"/> +          <xsl:variable name="secondary" select="&secondary;"/> +          <xsl:variable name="tertiary" select="&tertiary;"/> +          <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/> +          <rx:page-index list-separator="{$number.separator}" +                         range-separator="{$range.separator}"> +            <xsl:if test="$refs[@significance='preferred'][not(see)]"> +              <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary.significant"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$tertiary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +            <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see)]"> +              <rx:index-item xsl:use-attribute-sets="xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$tertiary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +          </rx:page-index> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:variable name="page-number-citations"> +          <xsl:for-each select="$refs[not(see)]"> +            <xsl:apply-templates select="." mode="reference"> +              <xsl:with-param name="scope" select="$scope"/> +              <xsl:with-param name="role" select="$role"/> +              <xsl:with-param name="type" select="$type"/> +              <xsl:with-param name="position" select="position()"/> +            </xsl:apply-templates> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:choose> +          <xsl:when test="$passivetex.extensions != '0'"> +            <fotex:sort xmlns:fotex="http://www.tug.org/fotex"> +              <xsl:copy-of select="$page-number-citations"/> +            </fotex:sort> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$page-number-citations"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:if test="$refs/see"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]" +                           mode="index-see"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +        <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </xsl:if> + +  </fo:block> + +  <xsl:if test="$refs/seealso"> +    <fo:block> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]" +                           mode="index-seealso"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +        <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="reference"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:param name="position" select="0"/> +  <xsl:param name="separator" select="''"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$separator != ''"> +      <xsl:value-of select="$separator"/> +    </xsl:when> +    <xsl:when test="$position = 1"> +      <xsl:value-of select="$term.separator"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$number.separator"/> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="@zone and string(@zone)"> +      <xsl:call-template name="reference"> +        <xsl:with-param name="zones" select="normalize-space(@zone)"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="ancestor::*[contains(local-name(),'info') and not(starts-with(local-name(),'info'))]"> +      <xsl:call-template name="info.reference"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"/> +      </xsl:variable> + +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> + +      <xsl:if test="key('endofrange', $id)[&scope;]"> +        <xsl:apply-templates select="key('endofrange', $id)[&scope;][last()]" +                             mode="reference"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:with-param name="separator" select="$range.separator"/> +        </xsl:apply-templates> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="reference"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:param name="zones"/> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="contains($zones, ' ')"> +      <xsl:variable name="zone" select="substring-before($zones, ' ')"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +           <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> + +      <xsl:if test="$passivetex.extensions = '0'"> +        <xsl:copy-of select="$number.separator"/> +      </xsl:if> +      <xsl:call-template name="reference"> +        <xsl:with-param name="zones" select="substring-after($zones, ' ')"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="zone" select="$zones"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="info.reference"> +  <!-- This is not perfect. It doesn't treat indexterm inside info element as a range covering whole parent of info. +       It also not work when there is no ID generated for parent element. But it works in the most common cases. --> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="target" select="(ancestor::appendix|ancestor::article|ancestor::bibliography|ancestor::book| +                                       ancestor::chapter|ancestor::glossary|ancestor::part|ancestor::preface| +                                       ancestor::refentry|ancestor::reference|ancestor::refsect1|ancestor::refsect2| +                                       ancestor::refsect3|ancestor::refsection|ancestor::refsynopsisdiv| +                                       ancestor::sect1|ancestor::sect2|ancestor::sect3|ancestor::sect4|ancestor::sect5| +                                       ancestor::section|ancestor::setindex|ancestor::set|ancestor::sidebar)[&scope;]"/> +   +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$target[1]"/> +    </xsl:call-template> +  </xsl:variable> +   +  <fo:basic-link internal-destination="{$id}" +                 xsl:use-attribute-sets="index.page.number.properties"> +    <fo:page-number-citation ref-id="{$id}"/> +  </fo:basic-link> +</xsl:template> + +<xsl:template match="indexterm" mode="index-see"> +   <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +   <fo:inline> +     <xsl:text> (</xsl:text> +     <xsl:call-template name="gentext"> +       <xsl:with-param name="key" select="'see'"/> +     </xsl:call-template> +     <xsl:text> </xsl:text> +     <xsl:value-of select="see"/> +     <xsl:text>)</xsl:text> +   </fo:inline> +</xsl:template> + +<xsl:template match="indexterm" mode="index-seealso"> +   <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:for-each select="seealso"> +    <xsl:sort select="translate(., &lowercase;, &uppercase;)"/> +    <fo:block> +      <xsl:text>(</xsl:text> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'seealso'"/> +      </xsl:call-template> +      <xsl:text> </xsl:text> +      <xsl:value-of select="."/> +      <xsl:text>)</xsl:text> +    </fo:block> +  </xsl:for-each> + +</xsl:template> + +<!-- ====================================================================== --> + +<xsl:template name="generate-index-markup"> +  <xsl:param name="scope" select="(ancestor::book|/)[last()]"/> +  <xsl:param name="role" select="@role"/> +  <xsl:param name="type" select="@type"/> + +  <xsl:variable name="terms" select="$scope//indexterm[count(.|key('letter', +                                     translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[&scope;][1]) = 1]"/> +  <xsl:variable name="alphabetical" +                select="$terms[contains(concat(&lowercase;, &uppercase;), +                                        substring(&primary;, 1, 1))]"/> +  <xsl:variable name="others" select="$terms[not(contains(concat(&lowercase;, +                                                 &uppercase;), +                                             substring(&primary;, 1, 1)))]"/> + +  <xsl:text><index>
</xsl:text> +  <xsl:if test="$others"> +    <xsl:text>
<indexdiv>
</xsl:text> +    <xsl:text><title></xsl:text> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'index symbols'"/> +    </xsl:call-template> +    <xsl:text></title>
</xsl:text> +    <xsl:apply-templates select="$others[count(.|key('primary', +                                 &primary;)[&scope;][1]) = 1]" +                         mode="index-symbol-div-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:text></indexdiv>
</xsl:text> +  </xsl:if> + +  <xsl:apply-templates select="$alphabetical[count(.|key('letter', +                               translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[&scope;][1]) = 1]" +                       mode="index-div-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +  </xsl:apply-templates> +  <xsl:text></index>
</xsl:text> +</xsl:template> + +<xsl:template match="*" mode="index-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:text><</xsl:text> +  <xsl:value-of select="local-name(.)"/> +  <xsl:text>>
</xsl:text> +  <xsl:apply-templates mode="index-markup"> +    <xsl:with-param name="scope" select="$scope"/> +    <xsl:with-param name="role" select="$role"/> +    <xsl:with-param name="type" select="$type"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> +  <xsl:text>
<indexdiv>
</xsl:text> +  <xsl:text><title></xsl:text> +  <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/> +  <xsl:text></title>
</xsl:text> + +  <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]" +                       mode="index-primary-markup"> +    <xsl:with-param name="scope" select="$scope"/> +    <xsl:with-param name="role" select="$role"/> +    <xsl:with-param name="type" select="$type"/> +    <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +  </xsl:apply-templates> +  <xsl:text></indexdiv>
</xsl:text> +</xsl:template> + +<xsl:template match="indexterm" mode="index-symbol-div-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> + +  <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]" +                       mode="index-primary-markup"> +    <xsl:with-param name="scope" select="$scope"/> +    <xsl:with-param name="role" select="$role"/> +    <xsl:with-param name="type" select="$type"/> +    <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="indexterm" mode="index-primary-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="&primary;"/> +  <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/> +  <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/> + +  <xsl:text>
<indexentry>
</xsl:text> +  <xsl:text><primaryie></xsl:text> +  <xsl:text><phrase></xsl:text> +  <xsl:call-template name="escape-text"> +    <xsl:with-param name="text" select="string(primary)"/> +  </xsl:call-template> +  <xsl:text></phrase></xsl:text> +  <xsl:if test="$pages">,</xsl:if> +  <xsl:text>
</xsl:text> + +  <xsl:for-each select="$pages"> +    <xsl:apply-templates select="." mode="reference-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +    </xsl:apply-templates> +  </xsl:for-each> + +  <xsl:text></primaryie>
</xsl:text> + +  <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::see or self::seealso]"> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]" +                         mode="index-see-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]" +                         mode="index-seealso-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]"  +                         mode="index-secondary-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </xsl:if> +  <xsl:text></indexentry>
</xsl:text> +</xsl:template> + +<xsl:template match="indexterm" mode="index-secondary-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/> +  <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/> +  <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/> + +  <xsl:text><secondaryie></xsl:text> +  <xsl:text><phrase></xsl:text> +  <xsl:call-template name="escape-text"> +    <xsl:with-param name="text" select="string(secondary)"/> +  </xsl:call-template> +  <xsl:text></phrase></xsl:text> +  <xsl:if test="$pages">,</xsl:if> +  <xsl:text>
</xsl:text> + +  <xsl:for-each select="$pages"> +    <xsl:apply-templates select="." mode="reference-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +    </xsl:apply-templates> +  </xsl:for-each> + +  <xsl:text></secondaryie>
</xsl:text> + +  <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::see or self::seealso]"> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]" +                         mode="index-see-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]" +                         mode="index-seealso-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]"  +                         mode="index-tertiary-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-tertiary-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> +  <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/> +  <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/> + +  <xsl:text><tertiaryie></xsl:text> +  <xsl:text><phrase></xsl:text> +  <xsl:call-template name="escape-text"> +    <xsl:with-param name="text" select="string(tertiary)"/> +  </xsl:call-template> +  <xsl:text></phrase></xsl:text> +  <xsl:if test="$pages">,</xsl:if> +  <xsl:text>
</xsl:text> + +  <xsl:for-each select="$pages"> +    <xsl:apply-templates select="." mode="reference-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +    </xsl:apply-templates> +  </xsl:for-each> + +  <xsl:text></tertiaryie>
</xsl:text> + +  <xsl:variable name="see" select="$refs/see | $refs/seealso"/> +  <xsl:if test="$see"> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]" +                         mode="index-see-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]" +                         mode="index-seealso-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="reference-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:choose> +    <xsl:when test="@zone and string(@zone)"> +      <xsl:call-template name="reference-markup"> +        <xsl:with-param name="zones" select="normalize-space(@zone)"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"/> +      </xsl:variable> + + +      <xsl:choose> +        <xsl:when test="@startref and @class='endofrange'"> +          <xsl:text><phrase role="pageno"></xsl:text> +          <xsl:text><link linkend="</xsl:text> +          <xsl:value-of select="@startref"/> +          <xsl:text>"></xsl:text> +          <fo:basic-link internal-destination="{@startref}" +                     xsl:use-attribute-sets="index.page.number.properties"> +            <fo:page-number-citation ref-id="{@startref}"/> +            <xsl:text>-</xsl:text> +            <fo:page-number-citation ref-id="{$id}"/> +          </fo:basic-link> +          <xsl:text></link></xsl:text> +          <xsl:text></phrase>
</xsl:text> +        </xsl:when> +        <xsl:otherwise> +          <xsl:text><phrase role="pageno"></xsl:text> +          <xsl:if test="$id"> +            <xsl:text><link linkend="</xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text>"></xsl:text> +          </xsl:if> +          <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +            <fo:page-number-citation ref-id="{$id}"/> +          </fo:basic-link> +          <xsl:if test="$id"> +            <xsl:text></link></xsl:text> +          </xsl:if> +          <xsl:text></phrase>
</xsl:text> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="reference-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:param name="zones"/> +  <xsl:choose> +    <xsl:when test="contains($zones, ' ')"> +      <xsl:variable name="zone" select="substring-before($zones, ' ')"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:text><phrase fole="pageno"></xsl:text> +      <xsl:if test="$target[1]/@id or $target[1]/@xml:id"> +        <xsl:text><link linkend="</xsl:text> +        <xsl:value-of select="$id"/> +        <xsl:text>"></xsl:text> +      </xsl:if> +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +      <xsl:if test="$target[1]/@id or $target[1]/@xml:id"> +        <xsl:text></link></xsl:text> +      </xsl:if> +      <xsl:text></phrase>
</xsl:text> + +      <xsl:call-template name="reference"> +        <xsl:with-param name="zones" select="substring-after($zones, ' ')"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="zone" select="$zones"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:text><phrase role="pageno"></xsl:text> +      <xsl:if test="$target[1]/@id or target[1]/@xml:id"> +        <xsl:text><link linkend="</xsl:text> +        <xsl:value-of select="$id"/> +        <xsl:text>"></xsl:text> +      </xsl:if> +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +      <xsl:if test="$target[1]/@id or target[1]/@xml:id"> +        <xsl:text></link></xsl:text> +      </xsl:if> +      <xsl:text></phrase>
</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="indexterm" mode="index-see-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <fo:block> +    <xsl:text><seeie></xsl:text> +    <xsl:text><phrase></xsl:text> +    <xsl:call-template name="escape-text"> +      <xsl:with-param name="text" select="string(see)"/> +    </xsl:call-template> +    <xsl:text></phrase></xsl:text> +    <xsl:text></seeie>
</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="indexterm" mode="index-seealso-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <fo:block> +    <xsl:text><seealsoie></xsl:text> +    <xsl:text><phrase></xsl:text> +    <xsl:call-template name="escape-text"> +      <xsl:with-param name="text" select="string(seealso)"/> +    </xsl:call-template> +    <xsl:text></phrase></xsl:text> +    <xsl:text></seealsoie>
</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template name="escape-text"> +  <xsl:param name="text" select="''"/> + +  <xsl:variable name="ltpos" select="substring-before($text, '<')"/> +  <xsl:variable name="amppos" select="substring-before($text, '&')"/> + +  <xsl:choose> +    <xsl:when test="contains($text,'<') and contains($text, '&') +                    and string-length($ltpos) < string-length($amppos)"> +      <xsl:value-of select="$ltpos"/> +      <xsl:text>&lt;</xsl:text> +      <xsl:call-template name="escape-text"> +        <xsl:with-param name="text" select="substring-after($text, '<')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:when test="contains($text,'<') and contains($text, '&') +                    and string-length($amppos) < string-length($ltpos)"> +      <xsl:value-of select="$amppos"/> +      <xsl:text>&amp;</xsl:text> +      <xsl:call-template name="escape-text"> +        <xsl:with-param name="text" select="substring-after($text, '&')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:when test="contains($text, '<')"> +      <xsl:value-of select="$ltpos"/> +      <xsl:text>&lt;</xsl:text> +      <xsl:call-template name="escape-text"> +        <xsl:with-param name="text" select="substring-after($text, '<')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:when test="contains($text, '&')"> +      <xsl:value-of select="$amppos"/> +      <xsl:text>&amp;</xsl:text> +      <xsl:call-template name="escape-text"> +        <xsl:with-param name="text" select="substring-after($text, '&')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:value-of select="$text"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="index.separator"> +  <xsl:param name="key" select="''"/> +  <xsl:param name="lang"> +    <xsl:call-template name="l10n.language"/> +  </xsl:param> + +  <xsl:choose> +    <xsl:when test="$key = 'index.term.separator'"> +      <xsl:choose> +        <!-- Use the override if not blank --> +        <xsl:when test="$index.term.separator != ''"> +          <xsl:copy-of select="$index.term.separator"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="gentext.template"> +            <xsl:with-param name="lang" select="$lang"/> +            <xsl:with-param name="context">index</xsl:with-param> +            <xsl:with-param name="name">term-separator</xsl:with-param> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="$key = 'index.number.separator'"> +      <xsl:choose> +        <!-- Use the override if not blank --> +        <xsl:when test="$index.number.separator != ''"> +          <xsl:copy-of select="$index.number.separator"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="gentext.template"> +            <xsl:with-param name="lang" select="$lang"/> +            <xsl:with-param name="context">index</xsl:with-param> +            <xsl:with-param name="name">number-separator</xsl:with-param> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="$key = 'index.range.separator'"> +      <xsl:choose> +        <!-- Use the override if not blank --> +        <xsl:when test="$index.range.separator != ''"> +          <xsl:copy-of select="$index.range.separator"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="gentext.template"> +            <xsl:with-param name="lang" select="$lang"/> +            <xsl:with-param name="context">index</xsl:with-param> +            <xsl:with-param name="name">range-separator</xsl:with-param> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autotoc.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autotoc.xsl.svn-base new file mode 100644 index 0000000..30f3277 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/autotoc.xsl.svn-base @@ -0,0 +1,855 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template name="set.toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" select="book|setindex"/> + +  <xsl:if test="$nodes"> +    <fo:block id="toc...{$id}" +              xsl:use-attribute-sets="toc.margin.properties"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:attribute name="axf:outline-level">1</xsl:attribute> +        <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +        <xsl:attribute name="axf:outline-title"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'TableofContents'"/> +          </xsl:call-template> +        </xsl:attribute> +      </xsl:if> +      <xsl:call-template name="table.of.contents.titlepage"/> +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template name="division.toc"> +  <xsl:param name="toc-context" select="."/> +  <xsl:param name="toc.title.p" select="true()"/> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" +                select="$toc-context/part +                        |$toc-context/reference +                        |$toc-context/preface +                        |$toc-context/chapter +                        |$toc-context/appendix +                        |$toc-context/article +                        |$toc-context/bibliography +                        |$toc-context/glossary +                        |$toc-context/index"/> + +  <xsl:if test="$nodes"> +    <fo:block id="toc...{$cid}" +              xsl:use-attribute-sets="toc.margin.properties"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:attribute name="axf:outline-level">1</xsl:attribute> +        <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +        <xsl:attribute name="axf:outline-title"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'TableofContents'"/> +          </xsl:call-template> +        </xsl:attribute> +      </xsl:if> +      <xsl:if test="$toc.title.p"> +        <xsl:call-template name="table.of.contents.titlepage"/> +      </xsl:if> +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template name="component.toc"> +  <xsl:param name="toc-context" select="."/> +  <xsl:param name="toc.title.p" select="true()"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" select="section|sect1|refentry +                                     |article|bibliography|glossary +                                     |qandaset[$qanda.in.toc != 0] +                                     |appendix|index"/> +  <xsl:if test="$nodes"> +    <fo:block id="toc...{$id}" +              xsl:use-attribute-sets="toc.margin.properties"> +      <xsl:if test="$toc.title.p"> +        <xsl:call-template name="table.of.contents.titlepage"/> +      </xsl:if> +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template name="component.toc.separator"> +  <!-- Customize to output something between +       component.toc and first output --> +</xsl:template> + +<xsl:template name="section.toc"> +  <xsl:param name="toc-context" select="."/> +  <xsl:param name="toc.title.p" select="true()"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" +                select="section|sect1|sect2|sect3|sect4|sect5|refentry +                        |qandaset[$qanda.in.toc != 0] +                        |bridgehead[$bridgehead.in.toc != 0]"/> + +  <xsl:variable name="level"> +    <xsl:call-template name="section.level"/> +  </xsl:variable> + +  <xsl:if test="$nodes"> +    <fo:block id="toc...{$id}" +              xsl:use-attribute-sets="toc.margin.properties"> + +      <xsl:if test="$toc.title.p"> +        <xsl:call-template name="section.heading"> +          <xsl:with-param name="level" select="$level + 1"/> +          <xsl:with-param name="title"> +            <fo:block space-after="0.5em"> +              <xsl:call-template name="gentext"> +                <xsl:with-param name="key" select="'TableofContents'"/> +              </xsl:call-template> +            </fo:block> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:if> + +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template name="section.toc.separator"> +  <!-- Customize to output something between +       section.toc and first output --> +</xsl:template> +<!-- ==================================================================== --> + +<xsl:template name="toc.line"> +  <xsl:param name="toc-context" select="NOTANODE"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="label"> +    <xsl:apply-templates select="." mode="label.markup"/> +  </xsl:variable> + +  <fo:block xsl:use-attribute-sets="toc.line.properties"> +    <fo:inline keep-with-next.within-line="always"> +      <fo:basic-link internal-destination="{$id}"> +        <xsl:if test="$label != ''"> +          <xsl:copy-of select="$label"/> +          <xsl:value-of select="$autotoc.label.separator"/> +        </xsl:if> +        <xsl:apply-templates select="." mode="titleabbrev.markup"/> +      </fo:basic-link> +    </fo:inline> +    <fo:inline keep-together.within-line="always"> +      <xsl:text> </xsl:text> +      <fo:leader leader-pattern="dots" +                 leader-pattern-width="3pt" +                 leader-alignment="reference-area" +                 keep-with-next.within-line="always"/> +      <xsl:text> </xsl:text>  +      <fo:basic-link internal-destination="{$id}"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +    </fo:inline> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> +<xsl:template name="qandaset.toc"> +  <xsl:param name="toc-context" select="."/> +  <xsl:param name="toc.title.p" select="true()"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" select="qandadiv|qandaentry"/> + +  <xsl:if test="$nodes"> +    <fo:block id="toc...{$id}" +              xsl:use-attribute-sets="toc.margin.properties"> +      <xsl:if test="$toc.title.p"> +        <xsl:call-template name="table.of.contents.titlepage"/> +      </xsl:if> +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template name="qandaset.toc.separator"> +  <!-- Customize to output something between +       qandaset.toc and first output --> +</xsl:template> + +<xsl:template match="qandadiv" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="nodes" select="qandadiv|qandaentry"/> + +  <xsl:if test="$nodes"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> + +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="qandaentry" mode="toc"> +  <xsl:apply-templates select="question" mode="toc"/> +</xsl:template> + +<xsl:template match="question" mode="toc"> +  <xsl:variable name="firstchunk"> +    <xsl:apply-templates select="(*[local-name(.)!='label'])[1]/node()"/> +  </xsl:variable> + +  <xsl:variable name="deflabel"> +    <xsl:choose> +      <xsl:when test="ancestor-or-self::*[@defaultlabel]"> +        <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()] +                              /@defaultlabel"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$qanda.defaultlabel"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="label"> +    <xsl:apply-templates select="." mode="label.markup"/> +  </xsl:variable> + +  <fo:block xsl:use-attribute-sets="toc.line.properties" +	    margin-left="3em" +	    text-indent="-3em" +            end-indent="{$toc.indent.width}pt" +            last-line-end-indent="-{$toc.indent.width}pt"> +    <fo:inline keep-with-next.within-line="always"> +      <fo:basic-link internal-destination="{$id}"> +        <xsl:if test="$label != ''"> +          <xsl:copy-of select="$label"/> +          <xsl:if test="$deflabel = 'number' and not(label)"> +            <xsl:value-of select="$autotoc.label.separator"/> +          </xsl:if> +	  <xsl:text> </xsl:text> +        </xsl:if> +        <xsl:copy-of select="$firstchunk"/> +      </fo:basic-link> +    </fo:inline> +    <fo:inline keep-together.within-line="always"> +      <xsl:text> </xsl:text> +      <fo:leader leader-pattern="dots" +                 leader-pattern-width="3pt" +                 leader-alignment="reference-area" +                 keep-with-next.within-line="always"/> +      <xsl:text> </xsl:text>  +      <fo:basic-link internal-destination="{$id}"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +    </fo:inline> +  </fo:block> + +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="book|setindex" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="nodes" select="glossary|bibliography|preface|chapter +                                     |reference|part|article|appendix|index"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 0  +                and $toc.max.depth > $depth.from.context +                and $nodes"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> + +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="part" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="nodes" select="chapter|appendix|preface|reference| +                                     refentry|article|index|glossary| +                                     bibliography"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 0  +                and $toc.max.depth > $depth.from.context +                and $nodes"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> +       +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="reference" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:if test="$toc.section.depth > 0 +                and $toc.max.depth > $depth.from.context +                and refentry"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> +               +      <xsl:apply-templates select="refentry" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="refentry" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="preface|chapter|appendix|article" +              mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="nodes" select="section|sect1 +                                     |qandaset[$qanda.in.toc != 0] +                                     |simplesect[$simplesect.in.toc != 0] +                                     |refentry|appendix"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 0  +                and $toc.max.depth > $depth.from.context +                and $nodes"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> +               +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="sect1" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 1  +                and $toc.max.depth > $depth.from.context +                and sect2"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> +               +      <xsl:apply-templates select="sect2|qandaset[$qanda.in.toc != 0]"  +                           mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="sect2" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="reldepth" +                select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 2  +                and $toc.max.depth > $depth.from.context +                and sect3"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"> +          <xsl:with-param name="reldepth" select="$reldepth"/> +        </xsl:call-template> +      </xsl:attribute> +               +      <xsl:apply-templates select="sect3|qandaset[$qanda.in.toc != 0]"  +                           mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="sect3" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="reldepth" +                select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 3  +                and $toc.max.depth > $depth.from.context +                and sect4"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"> +          <xsl:with-param name="reldepth" select="$reldepth"/> +        </xsl:call-template> +      </xsl:attribute> +               +      <xsl:apply-templates select="sect4|qandaset[$qanda.in.toc != 0]"  +                           mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="sect4" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="reldepth" +                select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 4  +                and $toc.max.depth > $depth.from.context +                and sect5"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"> +          <xsl:with-param name="reldepth" select="$reldepth"/> +        </xsl:call-template> +      </xsl:attribute> +               +      <xsl:apply-templates select="sect5|qandaset[$qanda.in.toc != 0]"  +                           mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="sect5|simplesect" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="set.toc.indent"> +  <xsl:param name="reldepth"/> + +  <xsl:variable name="depth"> +    <xsl:choose> +      <xsl:when test="$reldepth != ''"> +        <xsl:value-of select="$reldepth"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="count(ancestor::*)"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0 or $passivetex.extensions != 0"> +       <xsl:value-of select="concat($depth*$toc.indent.width, 'pt')"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="concat($toc.indent.width, 'pt')"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + + +<xsl:template match="section" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="depth" select="count(ancestor::section) + 1"/> +  <xsl:variable name="reldepth" +                select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth >= $depth"> +    <xsl:call-template name="toc.line"> +      <xsl:with-param name="toc-context" select="$toc-context"/> +    </xsl:call-template> + +    <xsl:if test="$toc.section.depth > $depth  +                  and $toc.max.depth > $depth.from.context +                  and section"> +      <fo:block id="toc.{$cid}.{$id}"> +        <xsl:attribute name="margin-left"> +          <xsl:call-template name="set.toc.indent"> +            <xsl:with-param name="reldepth" select="$reldepth"/> +          </xsl:call-template> +        </xsl:attribute> +                 +        <xsl:apply-templates select="section|qandaset[$qanda.in.toc != 0]"  +                           mode="toc"> +          <xsl:with-param name="toc-context" select="$toc-context"/> +        </xsl:apply-templates> +      </fo:block> +    </xsl:if> +  </xsl:if> +</xsl:template> + +<xsl:template match="bibliography|glossary" +              mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="index" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:if test="* or $generate.index != 0"> +    <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template match="title" mode="toc"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="list.of.titles"> +  <xsl:param name="titles" select="'table'"/> +  <xsl:param name="nodes" select=".//table"/> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:if test="$nodes"> +    <fo:block id="lot...{$titles}...{$id}"> +      <xsl:choose> +        <xsl:when test="$titles='table'"> +          <xsl:call-template name="list.of.tables.titlepage"/> +        </xsl:when> +        <xsl:when test="$titles='figure'"> +          <xsl:call-template name="list.of.figures.titlepage"/> +        </xsl:when> +        <xsl:when test="$titles='equation'"> +          <xsl:call-template name="list.of.equations.titlepage"/> +        </xsl:when> +        <xsl:when test="$titles='example'"> +          <xsl:call-template name="list.of.examples.titlepage"/> +        </xsl:when> +        <xsl:when test="$titles='procedure'"> +          <xsl:call-template name="list.of.procedures.titlepage"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="list.of.unknowns.titlepage"/> +        </xsl:otherwise> +      </xsl:choose> +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="figure|table|example|equation|procedure" mode="toc"> +  <xsl:param name="toc-context" select="."/> +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- qandaset handled like a section when qanda.in.toc is set --> +<xsl:template match="qandaset" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="depth" select="count(ancestor::section) + 1"/> +  <xsl:variable name="reldepth" +                select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth >= $depth"> +    <xsl:call-template name="toc.line"> +      <xsl:with-param name="toc-context" select="$toc-context"/> +    </xsl:call-template> + +    <xsl:if test="$toc.section.depth > $depth  +                  and $toc.max.depth > $depth.from.context +                  and (child::qandadiv or child::qandaentry)"> +      <fo:block id="toc.{$cid}.{$id}"> +        <xsl:attribute name="margin-left"> +          <xsl:call-template name="set.toc.indent"> +            <xsl:with-param name="reldepth" select="$reldepth"/> +          </xsl:call-template> +        </xsl:attribute> +                 +        <xsl:apply-templates select="qandadiv|qandaentry" mode="toc"> +          <xsl:with-param name="toc-context" select="$toc-context"/> +        </xsl:apply-templates> +      </fo:block> +    </xsl:if> +  </xsl:if> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/axf.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/axf.xsl.svn-base new file mode 100644 index 0000000..f74c525 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/axf.xsl.svn-base @@ -0,0 +1,110 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** --> + +<xsl:template name="axf-document-information"> + +    <xsl:variable name="authors" select="(//author|//editor| +                                          //corpauthor|//authorgroup)[1]"/> +    <xsl:if test="$authors"> +      <xsl:variable name="author"> +        <xsl:choose> +          <xsl:when test="$authors[self::authorgroup]"> +            <xsl:call-template name="person.name.list"> +              <xsl:with-param name="person.list"  +                 select="$authors/*[self::author|self::corpauthor| +                               self::othercredit|self::editor]"/> +            </xsl:call-template> +          </xsl:when> +          <xsl:when test="$authors[self::corpauthor]"> +            <xsl:value-of select="$authors"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="person.name"> +              <xsl:with-param name="node" select="$authors"/> +            </xsl:call-template> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:element name="axf:document-info"> +        <xsl:attribute name="name">author</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:value-of select="normalize-space($author)"/> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> + +    <xsl:variable name="title"> +      <xsl:apply-templates select="/*[1]" mode="label.markup"/> +      <xsl:apply-templates select="/*[1]" mode="title.markup"/> +    </xsl:variable> + +    <!-- * see bug report #1465301 - mzjn --> +    <axf:document-info name="title"> +      <xsl:attribute name="value"> +        <xsl:value-of select="normalize-space($title)"/> +      </xsl:attribute> +    </axf:document-info> + +    <xsl:if test="//keyword"> +      <xsl:element name="axf:document-info"> +        <xsl:attribute name="name">keywords</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:for-each select="//keyword"> +            <xsl:value-of select="normalize-space(.)"/> +            <xsl:if test="position() != last()"> +              <xsl:text>, </xsl:text> +            </xsl:if> +          </xsl:for-each> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> + +    <xsl:if test="//subjectterm"> +      <xsl:element name="axf:document-info"> +        <xsl:attribute name="name">subject</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:for-each select="//subjectterm"> +            <xsl:value-of select="normalize-space(.)"/> +            <xsl:if test="position() != last()"> +              <xsl:text>, </xsl:text> +            </xsl:if> +          </xsl:for-each> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> + +</xsl:template> + +<!-- These properties are added to fo:simple-page-master --> +<xsl:template name="axf-page-master-properties"> +  <xsl:param name="page.master" select="''"/> + +  <xsl:if test="$crop.marks != 0"> +    <xsl:attribute name="axf:printer-marks">crop</xsl:attribute> +    <xsl:attribute name="axf:bleed"><xsl:value-of +                          select="$crop.mark.bleed"/></xsl:attribute> +    <xsl:attribute name="axf:printer-marks-line-width"><xsl:value-of +                          select="$crop.mark.width"/></xsl:attribute> +    <xsl:attribute name="axf:crop-offset"><xsl:value-of +                          select="$crop.mark.offset"/></xsl:attribute> +  </xsl:if> + +  <xsl:call-template name="user-axf-page-master-properties"> +    <xsl:with-param name="page.master" select="$page.master"/> +  </xsl:call-template> + +</xsl:template> + +<xsl:template name="user-axf-page-master-properties"> +  <xsl:param name="page.master" select="''"/> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/biblio-iso690.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/biblio-iso690.xsl.svn-base new file mode 100644 index 0000000..11c99ca --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/biblio-iso690.xsl.svn-base @@ -0,0 +1,1300 @@ +<?xml version="1.0" encoding="windows-1250"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     The original code for processing bibliography in ISO690 style +     was provided by Jana Dvorakova <jana4u@seznam.cz> + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- if biblioentry.alt.primary.seps is set to nonzero value then use alternative separators for primary responsibility - $alt.person.two.sep, $alt.person.last.sep, $alt.person.more.sep  --> +<xsl:param name="biblioentry.alt.primary.seps" select="0"/> + +<!-- how many authors will be printed if there is more than three authors - set to number 1 (default value), 2 or 3 --> +<xsl:param name="biblioentry.primary.count" select="1"/> + +<!-- ==================================================================== --> + +<xsl:template name="iso690.makecitation"> +<!-- Types of resources --> +  <xsl:choose> + +    <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ENTIRE MESSAGE SYSTEM --> +    <!-- same as Monographs --> +    <xsl:when test="./@role='messagesystem'"> +      <xsl:call-template name="iso690.monogr"/> +    </xsl:when> + +    <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ELECTRONIC MESSAGES --> +    <!-- same as Contributions to Monographs --> +    <xsl:when test="./@role='message'"> +      <xsl:call-template name="iso690.paper.mon"/> +    </xsl:when> + +    <!-- SERIALS --> +    <xsl:when test="./@role='serial' or ./biblioid/@class='issn' or ./issn"> +      <xsl:call-template name="iso690.serial"/> +    </xsl:when> + +    <!-- PARTS OF MONOGRAPHS --> +    <xsl:when test="./@role='part' or (./bibliomisc[@role='secnum']|./bibliomisc[@role='sectitle'])"> +      <xsl:call-template name="iso690.monogr.part"/> +    </xsl:when> + +    <!-- CONTRIBUTIONS TO MONOGRAPHS --> +    <xsl:when test="./@role='contribution' or (./biblioset/@relation='part' and ./biblioset/@relation='book')"> +      <xsl:call-template name="iso690.paper.mon"/> +    </xsl:when> + +    <!-- ARTICLES, ETC., IN SERIALS --> +    <xsl:when test="./@role='article' or (./biblioset/@relation='journal' and ./biblioset/@relation='article')"> +      <xsl:call-template name="iso690.article"/> +    </xsl:when> + +    <!-- PATENT DOCUMENTS --> +    <xsl:when test="./@role='patent' or (./bibliomisc[@role='patenttype'] and ./bibliomisc[@role='patentnum'])"> +      <xsl:call-template name="iso690.patent"/> +    </xsl:when> + +    <!-- MONOGRAPHS --> +    <xsl:otherwise> +      <xsl:call-template name="iso690.monogr"/> +    </xsl:otherwise> + +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- MONOGRAPHS --> +<xsl:template name="iso690.monogr"> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility --> +  <xsl:call-template name="iso690.secondary"/> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"/> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template name="iso690.pub"/> +  <!-- Extent --> +  <xsl:call-template name="iso690.extent"/> +  <!-- Series --> +  <xsl:call-template name="iso690.serie"/> +  <!-- Notes --> +  <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access --> +  <xsl:call-template name="iso690.access"/> +  <!-- Standard number --> +  <xsl:call-template name="iso690.isbn"/> +</xsl:template> + +<!-- SERIALS --> +<xsl:template name="iso690.serial"> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Responsibility [nonEL] --> +  <xsl:if test="not(./bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"> +    <xsl:with-param name="after" select="./bibliomisc[@role='issuing']"/> +  </xsl:call-template> +  <!-- Issue designation (date and/or n°) [nonEL] --> +  <xsl:if test="not(./bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.issuing"/> +  </xsl:if> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template name="iso690.pub"/> +  <!-- Series --> +  <xsl:call-template name="iso690.serie"/> +  <!-- Notes --> +  <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access --> +  <xsl:call-template name="iso690.access"/> +  <!-- Standard number --> +  <xsl:call-template name="iso690.issn"/> +</xsl:template> + +<!-- PARTS OF MONOGRAPHS --> +<xsl:template name="iso690.monogr.part"> +  <!-- Primary responsibility of host document --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title and Type of medium of host document --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility of host document [EL] --> +  <xsl:if test="./bibliomisc[@role='medium']"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"> +    <xsl:with-param name="after" select="./volumenum"/> +  </xsl:call-template> +  <!-- Numeration of the part [nonEL]--> +  <xsl:if test="not(./bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.partnr"/> +  <!-- Subordinate responsibility [nonEL] --> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template name="iso690.pub"/> +  <!-- Location within host --> +  <xsl:call-template name="iso690.part.location"/> +  <xsl:if test="./bibliomisc[@role='medium']"> +  <!-- Numeration within host document [EL] --> +  <!-- Notes [EL] --> +    <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access [EL] --> +    <xsl:call-template name="iso690.access"/> +  <!-- Standard number [EL] --> +    <xsl:call-template name="iso690.isbn"/> +  </xsl:if> +</xsl:template> + +<!-- CONTRIBUTIONS TO MONOGRAPHS --> +<xsl:template name="iso690.paper.mon"> +<!-- Contribution --> +  <xsl:apply-templates mode="iso690.paper.part" select="./biblioset[@relation='part']"/> +<!-- In --> +  <xsl:text>In </xsl:text> +<!-- Host --> +  <xsl:apply-templates mode="iso690.paper.book" select="./biblioset[@relation='book']"/> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.paper.part"> +<!-- Contribution --> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title --> +  <xsl:call-template name="iso690.title"> +    <xsl:with-param name="italic" select="0"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.paper.book"> +<!-- Host --> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility [EL] --> +  <xsl:if test="./bibliomisc[@role='medium']"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"/> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template  name="iso690.paper.pub"/> +  <!-- Numeration within host document [EL] --> +  <!-- Location within host --> +  <xsl:call-template name="iso690.location"/> +  <xsl:if test="./bibliomisc[@role='medium']"> +  <!-- Notes [EL] --> +    <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access [EL] --> +    <xsl:call-template name="iso690.access"/> +  <!-- Standard number [EL] --> +    <xsl:call-template name="iso690.isbn"/> +  </xsl:if> +</xsl:template> + +<!-- ARTICLES, ETC., IN SERIALS --> +<xsl:template name="iso690.article"> +<!-- Article --> +  <xsl:apply-templates mode="iso690.article.art" select="./biblioset[@relation='article']"/> +<!-- Serial --> +  <xsl:apply-templates mode="iso690.article.jour" select="./biblioset[@relation='journal']"/> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.article.art"> +<!-- Article --> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title --> +  <xsl:call-template name="iso690.title"> +    <xsl:with-param name="italic" select="0"/> +  </xsl:call-template> +  <!-- Subordinate responsibility [nonEL] --> +  <xsl:if test="not(../*/bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.article.jour"> +<!-- Serial --> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"> +    <xsl:with-param name="after" select="./pubdate[not(@role='issuing')]|./volumenum|./issuenum|./pagenums"/> +  </xsl:call-template> +  <!-- Number designation [EL] --> +  <!-- Location within host --> +  <xsl:call-template name="iso690.article.location"/> +  <xsl:if test="./bibliomisc[@role='medium']"> +  <!-- Notes [EL] --> +    <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access [EL] --> +    <xsl:call-template name="iso690.access"/> +  <!-- Standard number [EL] --> +    <xsl:call-template name="iso690.issn"/> +  </xsl:if> +</xsl:template> + +<!-- PATENT DOCUMENTS --> +<xsl:template name="iso690.patent"> +  <!-- Primary responsibility (applicant) --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title of the invention --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility --> +  <xsl:call-template name="iso690.secondary"/> +  <!-- Notes --> +  <xsl:call-template name="iso690.notice"/> +  <!-- Identification --> +  <xsl:call-template name="iso690.pat.ident"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Elements --> + +<!-- Primary responsibility --> +<xsl:template name="iso690.primary"> +  <xsl:param name="primary.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./authorgroup/author|./author"> +      <xsl:call-template name="iso690.author.list"> +        <xsl:with-param name="person.list" select=".//authorgroup/author|.//author"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="./authorgroup/editor|./editor"> +      <xsl:call-template name="iso690.author.list"> +        <xsl:with-param name="person.list" select=".//authorgroup/editor|.//editor"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="./authorgroup/corpauthor|./corpauthor"> +      <xsl:call-template name="iso690.author.list"> +        <xsl:with-param name="person.list" select=".//authorgroup/corpauthor|.//corpauthor"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:if test="(./firstname)and(./surname)"> +        <xsl:call-template name="iso690.author"/> +        <xsl:call-template name="iso690.endsep"> +          <xsl:with-param name="text" select="string(./firstname[1])"/> +          <xsl:with-param name="sep" select="$primary.sep"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.author.list"> +  <xsl:param name="person.list" +             select="author|corpauthor|editor"/> +  <xsl:param name="person.count" select="count($person.list)"/> +  <xsl:param name="count" select="1"/> +  <xsl:param name="group" select="./authorgroup[@role='many']"/> +  <xsl:param name="many" select="0"/> + +  <xsl:param name="primary.many"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.many'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="primary.editor"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.editor'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="primary.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template> +  </xsl:param> + +  <xsl:choose> +    <xsl:when test="$count > $person.count"></xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$person.count < 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 > 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 > 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 < $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 < $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>=3) and ($person.count>=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>1) and  ($person.count>1)"> +              <xsl:call-template name="iso690.author.list"> +                <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]"/> +                <xsl:with-param name="person.count" select="2"/> +                <xsl:with-param name="count" select="1"/> +                <xsl:with-param name="many" select="1"/> +                <xsl:with-param name="group"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:otherwise> +              <xsl:call-template name="iso690.author.list"> +                <xsl:with-param name="person.list" select="$person.list[1]"/> +                <xsl:with-param name="person.count" select="1"/> +                <xsl:with-param name="count" select="1"/> +                <xsl:with-param name="many" select="1"/> +                <xsl:with-param name="group"/> +              </xsl:call-template> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.author"> +  <xsl:param name="node" select="."/> +  <xsl:param name="lastfirst.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'lastfirst.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="name($node)!='corpauthor'"> +      <fo:inline text-transform="uppercase"> +        <xsl:apply-templates mode="iso690.mode" select="$node//surname[1]"/> +      </fo:inline> +      <xsl:if test="$node//surname and $node//firstname"> +        <xsl:value-of select="$lastfirst.sep"/> +      </xsl:if> +      <xsl:apply-templates mode="iso690.mode" select="$node//firstname[1]"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline text-transform="uppercase"> +        <xsl:apply-templates mode="iso690.mode" select="$node"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="corpauthor|firstname|surname" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Title and Type of medium --> +<xsl:template name="iso690.title"> +  <xsl:param name="medium" select="./bibliomisc[@role='medium']"/> +  <xsl:param name="italic" select="1"/> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template> +  </xsl:param> + +  <xsl:apply-templates mode="iso690.mode" select="./title"> +    <xsl:with-param name="medium" select="$medium"/> +    <xsl:with-param name="italic" select="$italic"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="title" mode="iso690.mode"> +  <xsl:param name="medium"/> +  <xsl:param name="italic" select="1"/> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="medium1"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium1'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="medium2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium2'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="$italic=1"> +      <xsl:call-template name="iso690.italic.title"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.make.title"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:if test="$medium"> +    <xsl:value-of select="$medium1"/> +    <xsl:apply-templates mode="iso690.mode" select="$medium"/> +    <xsl:value-of select="$medium2"/> +  </xsl:if> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="concat(string(.),string(../subtitle))"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="iso690.italic.title"> +  <fo:inline font-style="italic"> +    <xsl:call-template name="iso690.make.title"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="iso690.make.title"> +  <xsl:param name="submaintitle.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'submaintitle.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:if test="../subtitle"> +    <xsl:value-of select="$submaintitle.sep"/> +    <xsl:apply-templates mode="iso690.mode" select="../subtitle"/> +  </xsl:if> +</xsl:template> + +<xsl:template match="subtitle" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<xsl:template match="bibliomisc[@role='medium']" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Subordinate responsibility --> +<xsl:template name="iso690.secondary"> +  <xsl:param name="secondary.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="secondary.person.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.person.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:for-each select="./bibliomisc[@role='secondary']"> +    <xsl:apply-templates mode="iso690.mode" select="."/> +    <xsl:choose> +      <xsl:when test="position()=count(../bibliomisc[@role='secondary'])"> +        <xsl:call-template name="iso690.endsep"> +          <xsl:with-param name="text" select="string(.)"/> +          <xsl:with-param name="sep" select="$secondary.sep"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$secondary.person.sep"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:for-each> +</xsl:template> + +<xsl:template match="bibliomisc[@role='secondary']" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Edition --> +<xsl:template name="iso690.edition"> +  <xsl:param name="after"/> +  <xsl:param name="edition.serial.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.serial.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="string($after)!=''"> +      <xsl:apply-templates mode="iso690.mode" select="./edition"> +        <xsl:with-param name="sep" select="$edition.serial.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./edition"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="edition" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<!-- Issue designation (date and/or n°) --> +<xsl:template name="iso690.issuing"> +  <xsl:param name="issuing.div"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.range"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2] and ./issuenum[2]"> +      <xsl:call-template name="iso690.issuedate"/> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum[1]"> +        <xsl:with-param name="sep" select="$issuing.range"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum[2]"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2]"> +      <xsl:call-template name="iso690.issuedate"/> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]"> +        <xsl:with-param name="sep" select="$issuing.range"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pubdate[@role='issuing'] and ./volumenum and ./issuenum"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pubdate[@role='issuing']"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./volumenum"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./issuenum"> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.issuedate"> +  <xsl:param name="issuing.div"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.range"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./pubdate[@role='issuing'][2]"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][1]"> +        <xsl:with-param name="sep" select="$issuing.range"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][2]"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="pubdate[@role='issuing']" mode="iso690.mode"> +  <xsl:param name="sep"/> +  <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.space"> +    <xsl:with-param name="text" select="$substr"/> +  </xsl:call-template> +  <xsl:choose> +    <xsl:when test="$substr='-'"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="' '"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(.)"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- Numeration of the part --> +<xsl:template name="iso690.partnr"> +  <xsl:param name="partnr.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'partnr.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +    <xsl:with-param name="sep" select="$partnr.sep"/> +  </xsl:apply-templates> +</xsl:template> + +<!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +<xsl:template name="iso690.pub"> +  <xsl:param name="onlydate" select="0"/> +  <xsl:param name="placesep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'placepubl.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="pubsep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'publyear.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="endsep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pubinfo.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="(./publisher/publishername|./publishername|./publisher/address/city)and($onlydate=0)and(./pubdate[not(@role='issuing')]|./copyright/year|./date[@role='upd']|./date[@role='upd'])"> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city"> +        <xsl:with-param name="sep" select="$placesep"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername"> +        <xsl:with-param name="sep" select="$pubsep"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:apply-templates> +      <xsl:if test="not(./pubdate[not(@role='issuing')]|./copyright/year)"> +        <xsl:call-template name="iso690.data"> +          <xsl:with-param name="sep" select="$endsep"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:when> +    <xsl:when test="(./publisher/publishername|./publishername)and(./publisher/address/city)and($onlydate=0)"> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city"> +        <xsl:with-param name="sep" select="$placesep"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="($onlydate=1)or(./pubdate[not(@role='issuing')]|./copyright/year)"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:apply-templates> +      <xsl:if test="$onlydate=1"> +        <xsl:call-template name="iso690.location"> +          <xsl:with-param name="onlypages" select="1"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:when> +    <xsl:when test="not(./pubdate[not(@role='issuing')]|./copyright/year)"> +      <xsl:call-template name="iso690.data"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:call-template> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.paper.pub"> +  <xsl:param name="spec.pubinfo.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'spec.pubinfo.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./volumnum|./issuenum|./pagenums"> +      <xsl:call-template name="iso690.pub"> +        <xsl:with-param name="endsep" select="$spec.pubinfo.sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.pub"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.data"> +  <xsl:param name="sep"/> +  <xsl:param name="datecit2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./date[@role='upd']"> +    <xsl:with-param name="sep"/> +  </xsl:apply-templates> +  <xsl:apply-templates mode="iso690.mode" select="./date[@role='cit']"/> +  <xsl:choose> +    <xsl:when test="./date[@role='cit']"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="$datecit2"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="./date[@role='upd']"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(./date[@role='upd'])"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="publisher/address/city|publishername" mode="iso690.mode"> +  <xsl:param name="sep"/> +  <xsl:param name="upd" select="0"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="pubdate|copyright/year" mode="iso690.mode"> +  <xsl:param name="sep"/> +  <xsl:param name="upd" select="1"/> +  <xsl:param name="datecit2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> +  </xsl:param> +  <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/> +  <xsl:if test="name(.)!='pubdate'"> +    <xsl:value-of select="'©'"/><!-- copyright --> +  </xsl:if> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.space"> +    <xsl:with-param name="text" select="$substr"/> +  </xsl:call-template> +  <xsl:if test="$upd!=0"> +    <xsl:choose> +      <xsl:when test="name(.)='pubdate'"> +        <xsl:apply-templates mode="iso690.mode" select="../date[@role='upd']"/> +        <xsl:apply-templates mode="iso690.mode" select="../date[@role='cit']"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates mode="iso690.mode" select="../../date[@role='upd']"/> +        <xsl:apply-templates mode="iso690.mode" select="../../date[@role='cit']"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:if> +  <xsl:choose> +    <xsl:when test="../date[@role='cit']|../../date[@role='cit'] and $upd!=0"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="$datecit2"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="../date[@role='upd']|../../date[@role='upd'] and $upd!=0"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(../date[@role='upd'])"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$substr='-'"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="' '"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(.)"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.space"> +  <xsl:param name="text" select="substring(string(.),string-length(string(.)))"/> +  <xsl:if test="$text='-'"> +    <xsl:value-of select="' '"/> +  </xsl:if> +</xsl:template> + +<!-- Date of update/revision --> +<xsl:template match="date[@role='upd']" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'upd.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$sep"/> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Date of citation --> +<xsl:template match="date[@role='cit']" mode="iso690.mode"> +  <xsl:param name="datecit1"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit1'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="datecit2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$datecit1"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$datecit2"/> +</xsl:template> + +<!-- Extent --> +<xsl:template name="iso690.extent"> +  <xsl:param name="extent.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'extent.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./pagenums"> +    <xsl:with-param name="sep" select="$extent.sep"/> +  </xsl:apply-templates> +</xsl:template> + +<!-- Location within host --> +<xsl:template name="iso690.part.location"> +  <xsl:param name="location.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./pagenums"> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"/> +      <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> +    </xsl:when> +    <xsl:when test="./bibliomisc[@role='sectitle']"> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.article.location"> +  <xsl:param name="location.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="locs.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="not(./date[@role='upd']|./date[@role='cit'])"> +      <xsl:choose> +        <xsl:when test="./volumenum|./issuenum|./pagenums"> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="upd" select="0"/> +            <xsl:with-param name="sep" select="$locs.sep"/> +          </xsl:apply-templates> +          <xsl:call-template name="iso690.location"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="sep" select="$location.sep"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="./volumenum|./issuenum|./pagenums"> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="upd" select="0"/> +            <xsl:with-param name="sep" select="$locs.sep"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="upd" select="0"/> +            <xsl:with-param name="sep" select="$location.sep"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +      <xsl:choose> +        <xsl:when test="./issuenum"> +          <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> +          <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +            <xsl:with-param name="sep"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +            <xsl:with-param name="sep"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +      <xsl:choose> +        <xsl:when test="./pagenums"> +          <xsl:call-template name="iso690.data"> +            <xsl:with-param name="sep" select="$locs.sep"/> +          </xsl:call-template> +          <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="iso690.data"> +            <xsl:with-param name="sep" select="$location.sep"/> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.location"> +  <xsl:param name="location.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./volumenum and not(./issuenum) and not(./pagenums)"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./issuenum and not(./pagenums)"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pagenums"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"/> +      <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="bibliomisc[@role='secnum']|bibliomisc[@role='sectitle']" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="volumenum|issuenum" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="pagenums" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<!-- Series --> +<xsl:template name="iso690.serie"> +  <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[@role='serie']"/> +</xsl:template> + +<!-- Notes --> +<xsl:template name="iso690.notice"> +  <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[not(@role)]"/> +</xsl:template> + +<xsl:template match="bibliomisc[not(@role)]|bibliomisc[@role='serie']" mode="iso690.mode"> +  <xsl:param name="notice.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'notice.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$notice.sep"/> +  </xsl:call-template> +</xsl:template> + +<!-- Avaibility and access --> +<xsl:template name="iso690.access"> +  <xsl:for-each select="./biblioid[@class='uri']|./bibliomisc[@role='access']"> +    <xsl:choose> +      <xsl:when test="position()=1"> +        <xsl:apply-templates mode="iso690.mode" select="."/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates mode="iso690.mode" select="."> +          <xsl:with-param name="firstacc" select="0"/> +        </xsl:apply-templates> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:for-each> +</xsl:template> + +<xsl:template match="biblioid[@class='uri']/ulink|bibliomisc[@role='access']/ulink" mode="iso690.mode"> +  <xsl:param name="link1"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link1'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="link2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link2'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$link1"/> +  <xsl:call-template name="ulink"/> +  <xsl:value-of select="$link2"/> +</xsl:template> + +<xsl:template match="biblioid[@class='uri']|bibliomisc[@role='access']" mode="iso690.mode"> +  <xsl:param name="firstacc" select="1"/> +  <xsl:param name="access"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="acctoo"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'acctoo'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="onwww"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'onwww'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="oninet"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'oninet'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="access.end"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.end'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="access.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="$firstacc=1"> +      <xsl:value-of select="$access"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$acctoo"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:choose> +    <xsl:when test="(./ulink)and(string(./ulink)=string(.))"> +      <xsl:choose> +        <xsl:when test="(starts-with(./ulink/@url,'http://')or(starts-with(./ulink/@url,'https://')))"> +          <xsl:value-of select="$onwww"/> +          <xsl:value-of select="$access.end"/> +          <xsl:apply-templates mode="iso690.mode" select="./ulink"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:value-of select="$oninet"/> +          <xsl:value-of select="$access.end"/> +          <xsl:apply-templates mode="iso690.mode" select="./ulink"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="(./ulink)and(string(./ulink)!=string(.))"> +      <xsl:value-of select="text()[1]"/> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="text()[1]"/> +        <xsl:with-param name="sep" select="$access.end"/> +      </xsl:call-template> +      <xsl:apply-templates mode="iso690.mode" select="./ulink"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:value-of select="$access.sep"/> +</xsl:template> + +<!-- Standard number - ISBN --> +<xsl:template name="iso690.isbn"> +  <xsl:choose> +    <xsl:when test="./biblioid/@class='isbn'"> +      <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='isbn']"/> +    </xsl:when> +    <xsl:when test="./isbn"> +      <xsl:apply-templates mode="iso690.mode" select="./isbn"/> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="isbn|biblioid[@class='isbn']" mode="iso690.mode"> +  <xsl:param name="isbn"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'isbn'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="stdnum.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$isbn"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$stdnum.sep"/> +</xsl:template> + +<!-- Standard number - ISSN --> +<xsl:template name="iso690.issn"> +  <xsl:choose> +    <xsl:when test="./biblioid/@class='issn'"> +      <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='issn']"/> +    </xsl:when> +    <xsl:when test="./issn"> +      <xsl:apply-templates mode="iso690.mode" select="./issn"/> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="issn|biblioid[@class='issn']" mode="iso690.mode"> +  <xsl:param name="issn"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issn'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="stdnum.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$issn"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$stdnum.sep"/> +</xsl:template> + +<!-- Identification of patent document --> +<xsl:template name="iso690.pat.ident"> +  <xsl:param name="patdate.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patdate.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./address/country"/> +  <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patenttype']"/> +  <xsl:choose> +    <xsl:when test="./biblioid[@class='other' and @otherclass='patentnum']"> +      <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='other' and @otherclass='patentnum']"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patentnum']"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +    <xsl:with-param name="sep" select="$patdate.sep"/> +  </xsl:apply-templates> +</xsl:template> + +<!-- Country or issuing office --> +<xsl:template match="address/country" mode="iso690.mode"> +  <xsl:param name="patcountry.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patcountry.sep'"/></xsl:call-template> +  </xsl:param> +  <fo:inline font-style="italic"> +    <xsl:apply-templates mode="iso690.mode"/> +  </fo:inline> +  <xsl:value-of select="$patcountry.sep"/> +</xsl:template> + +<!-- Kind of patent document --> +<xsl:template match="bibliomisc[@role='patenttype']" mode="iso690.mode"> +  <xsl:param name="pattype.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pattype.sep'"/></xsl:call-template> +  </xsl:param> +  <fo:inline font-style="italic"> +    <xsl:apply-templates mode="iso690.mode"/> +  </fo:inline> +  <xsl:value-of select="$pattype.sep"/> +</xsl:template> + +<!-- Number --> +<xsl:template match="biblioid[@class='other' and @otherclass='patentnum']|bibliomisc[@role='patentnum']" mode="iso690.mode"> +  <xsl:param name="patnum.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patnum.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$patnum.sep"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Supplementary templates --> + +<xsl:template name="iso690.endsep"> +  <xsl:param name="text"/> +  <xsl:param name="sep" select=". "/> +  <xsl:choose> +    <xsl:when test="substring($text,string-length($text))!=substring($sep,1,1)"> +      <xsl:value-of select="$sep"/> +    </xsl:when> +    <xsl:when test="substring($text,string-length($text))=' '"> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="' '"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="iso690.mode"> +  <xsl:apply-templates select="."/><!-- try the default mode --> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/biblio.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/biblio.xsl.svn-base new file mode 100644 index 0000000..0212fad --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/biblio.xsl.svn-base @@ -0,0 +1,1169 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="bibliography"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="not(parent::*) or parent::part or parent::book"> +      <xsl:variable name="master-reference"> +        <xsl:call-template name="select.pagemaster"/> +      </xsl:variable> + +      <fo:page-sequence hyphenate="{$hyphenate}" +                        master-reference="{$master-reference}"> +        <xsl:attribute name="language"> +          <xsl:call-template name="l10n.language"/> +        </xsl:attribute> +        <xsl:attribute name="format"> +          <xsl:call-template name="page.number.format"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="initial-page-number"> +          <xsl:call-template name="initial.page.number"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="force-page-count"> +          <xsl:call-template name="force.page.count"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="hyphenation-character"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-character'"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="hyphenation-push-character-count"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="hyphenation-remain-character-count"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +          </xsl:call-template> +        </xsl:attribute> + +        <xsl:apply-templates select="." mode="running.head.mode"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:apply-templates> +        <xsl:apply-templates select="." mode="running.foot.mode"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:apply-templates> + +        <fo:flow flow-name="xsl-region-body"> +          <xsl:call-template name="set.flow.properties"> +            <xsl:with-param name="element" select="local-name(.)"/> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> + +          <fo:block id="{$id}"> +            <xsl:call-template name="bibliography.titlepage"/> +          </fo:block> +          <xsl:apply-templates/> +        </fo:flow> +      </fo:page-sequence> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" +                space-before.minimum="1em" +                space-before.optimum="1.5em" +                space-before.maximum="2em"> +        <xsl:call-template name="bibliography.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="bibliography/bibliographyinfo"></xsl:template> +<xsl:template match="bibliography/info"></xsl:template> +<xsl:template match="bibliography/title"></xsl:template> +<xsl:template match="bibliography/subtitle"></xsl:template> +<xsl:template match="bibliography/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="bibliodiv"> +  <fo:block> +    <xsl:attribute name="id"> +      <xsl:call-template name="object.id"/> +    </xsl:attribute> +    <xsl:call-template name="bibliodiv.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="bibliodiv/title"/> +<xsl:template match="bibliodiv/subtitle"/> +<xsl:template match="bibliodiv/titleabbrev"/> + +<!-- ==================================================================== --> + +<xsl:template match="bibliolist"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}" +            space-before.minimum="1em" +            space-before.optimum="1.5em" +            space-before.maximum="2em"> + +    <xsl:if test="blockinfo/title|info/title|title"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <xsl:apply-templates select="*[not(self::blockinfo) +                                   and not(self::info) +                                   and not(self::title) +                                   and not(self::titleabbrev)]"/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="biblioentry"> +  <xsl:param name="label"> +    <xsl:call-template name="biblioentry.label"/> +  </xsl:param> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="string(.) = ''"> +      <xsl:variable name="bib" select="document($bibliography.collection,.)"/> +      <xsl:variable name="entry" select="$bib/bibliography/ +                                         *[@id=$id or @xml:id=$id][1]"/> +      <xsl:choose> +        <xsl:when test="$entry"> +          <xsl:choose> +            <xsl:when test="$bibliography.numbered != 0"> +              <xsl:apply-templates select="$entry"> +                <xsl:with-param name="label" select="$label"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="$entry"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message> +            <xsl:text>No bibliography entry: </xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text> found in </xsl:text> +            <xsl:value-of select="$bibliography.collection"/> +          </xsl:message> +          <fo:block id="{$id}" xsl:use-attribute-sets="normal.para.spacing"> +            <xsl:text>Error: no bibliography entry: </xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text> found in </xsl:text> +            <xsl:value-of select="$bibliography.collection"/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" xsl:use-attribute-sets="biblioentry.properties"> +        <xsl:copy-of select="$label"/> +	<xsl:choose> +	  <xsl:when test="$bibliography.style = 'iso690'"> +	    <xsl:call-template name="iso690.makecitation"/> +	  </xsl:when> +	  <xsl:otherwise> +	    <xsl:apply-templates mode="bibliography.mode"/> +	  </xsl:otherwise> +	</xsl:choose> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="bibliomixed"> +  <xsl:param name="label"> +    <xsl:call-template name="biblioentry.label"/> +  </xsl:param> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="string(.) = ''"> +      <xsl:variable name="bib" select="document($bibliography.collection,.)"/> +      <xsl:variable name="entry" select="$bib/bibliography/ +                                         *[@id=$id or @xml:id=$id][1]"/> +      <xsl:choose> +        <xsl:when test="$entry"> +          <xsl:choose> +            <xsl:when test="$bibliography.numbered != 0"> +              <xsl:apply-templates select="$entry"> +                <xsl:with-param name="label" select="$label"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="$entry"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message> +            <xsl:text>No bibliography entry: </xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text> found in </xsl:text> +            <xsl:value-of select="$bibliography.collection"/> +          </xsl:message> +          <fo:block id="{$id}" xsl:use-attribute-sets="normal.para.spacing"> +            <xsl:text>Error: no bibliography entry: </xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text> found in </xsl:text> +            <xsl:value-of select="$bibliography.collection"/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" xsl:use-attribute-sets="biblioentry.properties"> +        <xsl:copy-of select="$label"/> +        <xsl:apply-templates mode="bibliomixed.mode"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="biblioentry.label"> +  <xsl:param name="node" select="."/> + +  <xsl:choose> +    <xsl:when test="$bibliography.numbered != 0"> +      <xsl:text>[</xsl:text> +      <xsl:number from="bibliography" count="biblioentry|bibliomixed" +                  level="any" format="1"/> +      <xsl:text>] </xsl:text> +    </xsl:when> +    <xsl:when test="local-name($node/child::*[1]) = 'abbrev'"> +      <xsl:text>[</xsl:text> +      <xsl:apply-templates select="$node/abbrev[1]"/> +      <xsl:text>] </xsl:text> +    </xsl:when> +    <xsl:when test="$node/@xreflabel"> +      <xsl:text>[</xsl:text> +      <xsl:value-of select="$node/@xreflabel"/> +      <xsl:text>] </xsl:text> +    </xsl:when> +    <xsl:when test="$node/@id or $node/@xml:id"> +      <xsl:text>[</xsl:text> +      <xsl:value-of select="($node/@id|$node/@xml:id)[1]"/> +      <xsl:text>] </xsl:text> +    </xsl:when> +    <xsl:otherwise><!-- nop --></xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="bibliography.mode"> +  <xsl:apply-templates select="."/><!-- try the default mode --> +</xsl:template> + +<xsl:template match="abbrev" mode="bibliography.mode"> +  <xsl:if test="preceding-sibling::*"> +    <fo:inline> +      <xsl:apply-templates mode="bibliography.mode"/> +    </fo:inline> +  </xsl:if> +</xsl:template> + +<xsl:template match="abstract" mode="bibliography.mode"> +  <!-- suppressed --> +</xsl:template> + +<xsl:template match="address" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="affiliation" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="shortaffil" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="jobtitle" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="artheader|articleinfo|article/info"  +              mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="artpagenums" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="author" mode="bibliography.mode"> +  <fo:inline> +    <xsl:call-template name="person.name"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorblurb|personblurb" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorgroup" mode="bibliography.mode"> +  <fo:inline> +    <xsl:call-template name="person.name.list"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorinitials" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliomisc" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliomset" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="biblioset" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="biblioset/title|biblioset/citetitle"  +              mode="bibliography.mode"> +  <xsl:variable name="relation" select="../@relation"/> +  <xsl:choose> +    <xsl:when test="$relation='article' or @pubwork='article'"> +      <xsl:call-template name="gentext.startquote"/> +      <xsl:apply-templates mode="bibliography.mode"/> +      <xsl:call-template name="gentext.endquote"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline font-style="italic"> +        <xsl:apply-templates/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:value-of select="$biblioentry.item.separator"/> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="bookbiblio" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="citetitle" mode="bibliography.mode"> +  <fo:inline> +    <xsl:choose> +      <xsl:when test="@pubwork = 'article'"> +        <xsl:call-template name="gentext.startquote"/> +        <xsl:apply-templates mode="bibliography.mode"/> +        <xsl:call-template name="gentext.endquote"/> +      </xsl:when> +      <xsl:otherwise> +        <fo:inline font-style="italic"> +          <xsl:apply-templates mode="bibliography.mode"/> +        </fo:inline> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="collab" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="confgroup" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contractnum" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contractsponsor" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contrib" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="copyright" mode="bibliography.mode"> +  <fo:inline> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'Copyright'"/> +    </xsl:call-template> +    <xsl:call-template name="gentext.space"/> +    <xsl:call-template name="dingbat"> +      <xsl:with-param name="dingbat">copyright</xsl:with-param> +    </xsl:call-template> +    <xsl:call-template name="gentext.space"/> +    <xsl:apply-templates select="year" mode="bibliography.mode"/> +    <xsl:if test="holder"> +      <xsl:call-template name="gentext.space"/> +      <xsl:apply-templates select="holder" mode="bibliography.mode"/> +    </xsl:if> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="year" mode="bibliography.mode"> +  <xsl:apply-templates/><xsl:text>, </xsl:text> +</xsl:template> + +<xsl:template match="year[position()=last()]" mode="bibliography.mode"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="holder" mode="bibliography.mode"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="corpauthor" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="corpcredit" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="corpname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="date" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="edition" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="editor" mode="bibliography.mode"> +  <fo:inline> +    <xsl:call-template name="person.name"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="firstname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="honorific" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="indexterm" mode="bibliography.mode"> +  <xsl:apply-templates select="."/>  +</xsl:template> + +<xsl:template match="invpartnumber" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="isbn" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="issn" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="issuenum" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="lineage" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="orgname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="othercredit" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="othername" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pagenums" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="printhistory" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="productname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="productnumber" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pubdate" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="publisher" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="publishername" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pubsnumber" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="releaseinfo" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="revhistory" mode="bibliography.mode"> +  <fo:block> +    <xsl:apply-templates select="."/> <!-- use normal mode --> +  </fo:block> +</xsl:template> + +<xsl:template match="seriesinfo" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="seriesvolnums" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="surname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="title" mode="bibliography.mode"> +  <fo:inline> +    <fo:inline font-style="italic"> +      <xsl:apply-templates mode="bibliography.mode"/> +    </fo:inline> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="titleabbrev" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="volumenum" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="orgdiv" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="collabname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="confdates" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="conftitle" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="confnum" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="confsponsor" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource" +              mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="bibliomixed.mode"> +  <xsl:apply-templates select="."/><!-- try the default mode --> +</xsl:template> + +<xsl:template match="abbrev" mode="bibliomixed.mode"> +  <xsl:if test="preceding-sibling::*"> +    <fo:inline> +      <xsl:apply-templates mode="bibliomixed.mode"/> +    </fo:inline> +  </xsl:if> +</xsl:template> + +<xsl:template match="abstract" mode="bibliomixed.mode"> +  <fo:block start-indent="1in"> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="para" mode="bibliomixed.mode"> +  <fo:block> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="address" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="affiliation" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="shortaffil" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="jobtitle" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="artpagenums" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="author" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:call-template name="person.name"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorblurb|personblurb" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorgroup" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorinitials" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliomisc" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="bibliomset" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliomset/title|bibliomset/citetitle"  +              mode="bibliomixed.mode"> +  <xsl:variable name="relation" select="../@relation"/> +  <xsl:choose> +    <xsl:when test="$relation='article' or @pubwork='article'"> +      <xsl:call-template name="gentext.startquote"/> +      <xsl:apply-templates mode="bibliomixed.mode"/> +      <xsl:call-template name="gentext.endquote"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline font-style="italic"> +        <xsl:apply-templates/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="biblioset" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="citetitle" mode="bibliomixed.mode"> +  <xsl:choose> +    <xsl:when test="@pubwork = 'article'"> +      <xsl:call-template name="gentext.startquote"/> +      <xsl:apply-templates mode="bibliomixed.mode"/> +      <xsl:call-template name="gentext.endquote"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline font-style="italic"> +        <xsl:apply-templates mode="bibliography.mode"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="collab" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="confgroup" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contractnum" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contractsponsor" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contrib" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="copyright" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="corpauthor" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="corpcredit" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="corpname" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="date" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="edition" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="editor" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="firstname" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="honorific" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="indexterm" mode="bibliomixed.mode"> +  <xsl:apply-templates select="."/>  +</xsl:template> + +<xsl:template match="invpartnumber" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="isbn" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="issn" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="issuenum" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="lineage" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="orgname" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="othercredit" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="othername" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pagenums" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="printhistory" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="productname" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="productnumber" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pubdate" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="publisher" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="publishername" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pubsnumber" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="releaseinfo" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="revhistory" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="seriesvolnums" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="surname" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="title" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="titleabbrev" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="volumenum" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource" +              mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/block.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/block.xsl.svn-base new file mode 100644 index 0000000..2d42c8a --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/block.xsl.svn-base @@ -0,0 +1,600 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This 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"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="para"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="simpara"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="formalpara"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- Only use title from info --> +<xsl:template match="formalpara/info"> +  <xsl:apply-templates select="title"/> +</xsl:template> + +<xsl:template match="formalpara/title|formalpara/info/title"> +  <xsl:variable name="titleStr"> +      <xsl:apply-templates/> +  </xsl:variable> +  <xsl:variable name="lastChar"> +    <xsl:if test="$titleStr != ''"> +      <xsl:value-of select="substring($titleStr,string-length($titleStr),1)"/> +    </xsl:if> +  </xsl:variable> + +  <fo:inline font-weight="bold" +             keep-with-next.within-line="always" +             padding-end="1em"> +    <xsl:copy-of select="$titleStr"/> +    <xsl:if test="$lastChar != '' +                  and not(contains($runinhead.title.end.punct, $lastChar))"> +      <xsl:value-of select="$runinhead.default.title.end.punct"/> +    </xsl:if> +    <xsl:text> </xsl:text> +  </fo:inline> +</xsl:template> + +<xsl:template match="formalpara/para"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="blockquote"> +  <fo:block xsl:use-attribute-sets="blockquote.properties"> +    <xsl:call-template name="anchor"/> +    <fo:block> +      <xsl:if test="title|info/title"> +        <fo:block xsl:use-attribute-sets="formal.title.properties"> +          <xsl:apply-templates select="." mode="object.title.markup"/> +        </fo:block> +      </xsl:if> +      <xsl:apply-templates select="*[local-name(.) != 'title' +                                   and local-name(.) != 'attribution']"/> +    </fo:block> +    <xsl:if test="attribution"> +      <fo:block text-align="right"> +        <!-- mdash --> +        <xsl:text>—</xsl:text> +        <xsl:apply-templates select="attribution"/> +      </fo:block> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="epigraph"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates select="para|simpara|formalpara|literallayout"/> +    <xsl:if test="attribution"> +      <fo:inline> +        <xsl:text>--</xsl:text> +        <xsl:apply-templates select="attribution"/> +      </fo:inline> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="attribution"> +  <fo:inline><xsl:apply-templates/></fo:inline> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="floater"> +  <xsl:param name="position" select="'none'"/> +  <xsl:param name="clear" select="'both'"/> +  <xsl:param name="width"/> +  <xsl:param name="content"/> +  <xsl:param name="start.indent">0pt</xsl:param> +  <xsl:param name="end.indent">0pt</xsl:param> + +  <xsl:choose> +    <xsl:when test="not($fop.extensions = 0)"> +      <!-- fop 0.20.5 does not support floats --> +      <xsl:copy-of select="$content"/> +    </xsl:when> +    <xsl:when test="$position = 'none'"> +      <xsl:copy-of select="$content"/> +    </xsl:when> +    <xsl:when test="$position = 'before'"> +      <fo:float float="before"> +        <xsl:copy-of select="$content"/> +      </fo:float> +    </xsl:when> +    <xsl:when test="$position = 'left' or +                    $position = 'start' or +                    $position = 'right' or +                    $position = 'end' or +                    $position = 'inside' or +                    $position = 'outside'"> +      <xsl:variable name="float"> +        <fo:float float="{$position}" +                  clear="{$clear}"> +          <fo:block-container  +                    start-indent="{$start.indent}" +                    end-indent="{$end.indent}"> +            <xsl:if test="$width != ''"> +              <xsl:attribute name="inline-progression-dimension"> +                <xsl:value-of select="$width"/> +              </xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:copy-of select="$content"/> +            </fo:block> +          </fo:block-container> +        </fo:float> +      </xsl:variable> +      <xsl:choose> +        <xsl:when test="$axf.extensions != 0 and self::sidebar"> +          <fo:block xsl:use-attribute-sets="normal.para.spacing" +                    space-after="0pt" +                    space-after.precedence="force" +                    start-indent="0pt" end-indent="0pt"> +            <xsl:copy-of select="$float"/> +          </fo:block> +        </xsl:when> +        <xsl:when test="$axf.extensions != 0 and  +                        ($position = 'left' or $position = 'start')"> +          <fo:float float="{$position}" +                    clear="{$clear}"> +            <fo:block-container  +                      inline-progression-dimension=".001mm" +                      end-indent="{$start.indent} + {$width} + {$end.indent}"> +              <xsl:attribute name="start-indent"> +                <xsl:choose> +                  <xsl:when test="ancestor::para"> +                    <!-- Special case for handling inline floats +                         in Antenna House--> +                    <xsl:value-of select="concat('-', $body.start.indent)"/> +                  </xsl:when> +                  <xsl:otherwise>0pt</xsl:otherwise> +                </xsl:choose> +              </xsl:attribute> +              <fo:block start-indent="{$start.indent}" +                        end-indent="-{$start.indent} - {$width}"> +                <xsl:copy-of select="$content"/> +              </fo:block> +            </fo:block-container> +          </fo:float> + +        </xsl:when> +        <xsl:when test="$axf.extensions != 0 and  +                        ($position = 'right' or $position = 'end')"> +          <!-- Special case for handling inline floats in Antenna House--> +          <fo:float float="{$position}" +                    clear="{$clear}"> +            <fo:block-container  +                      inline-progression-dimension=".001mm" +                      end-indent="-{$body.end.indent}" +                      start-indent="{$start.indent} + {$width} + {$end.indent}"> +              <fo:block end-indent="{$end.indent}" +                        start-indent="-{$end.indent} - {$width}"> +                <xsl:copy-of select="$content"/> +              </fo:block> +            </fo:block-container> +          </fo:float> + +        </xsl:when> +        <xsl:when test="$xep.extensions != 0 and self::sidebar"> +          <!-- float needs some space above  to line up with following para --> +          <fo:block xsl:use-attribute-sets="normal.para.spacing"> +            <xsl:copy-of select="$float"/> +          </fo:block> +        </xsl:when> +        <xsl:when test="$xep.extensions != 0"> +          <xsl:copy-of select="$float"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:copy-of select="$float"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$content"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="sidebar" name="sidebar"> +  <!-- Also does margin notes --> +  <xsl:variable name="pi-type"> +    <xsl:call-template name="pi.dbfo_float-type"/> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$pi-type = 'margin.note'"> +      <xsl:call-template name="margin.note"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="content"> +        <fo:block xsl:use-attribute-sets="sidebar.properties" +                  id="{$id}"> +          <xsl:call-template name="sidebar.titlepage"/> +          <xsl:apply-templates select="node()[not(self::title) and +                                         not(self::info) and +                                         not(self::sidebarinfo)]"/> +        </fo:block> +      </xsl:variable> + +      <xsl:variable name="pi-width"> +        <xsl:call-template name="pi.dbfo_sidebar-width"/> +      </xsl:variable> + +      <xsl:variable name="position"> +        <xsl:choose> +          <xsl:when test="$pi-type != ''"> +            <xsl:value-of select="$pi-type"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$sidebar.float.type"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> +     +      <xsl:call-template name="floater"> +        <xsl:with-param name="content" select="$content"/> +        <xsl:with-param name="position" select="$position"/> +        <xsl:with-param name="width"> +          <xsl:choose> +            <xsl:when test="$pi-width != ''"> +              <xsl:value-of select="$pi-width"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:value-of select="$sidebar.float.width"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +        <xsl:with-param name="start.indent"> +          <xsl:choose> +            <xsl:when test="$position = 'start' or  +                            $position = 'left'">0pt</xsl:when> +            <xsl:when test="$position = 'end' or  +                            $position = 'right'">0.5em</xsl:when> +            <xsl:otherwise>0pt</xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +        <xsl:with-param name="end.indent"> +          <xsl:choose> +            <xsl:when test="$position = 'start' or  +                            $position = 'left'">0.5em</xsl:when> +            <xsl:when test="$position = 'end' or  +                            $position = 'right'">0pt</xsl:when> +            <xsl:otherwise>0pt</xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<xsl:template match="sidebar/title|sidebarinfo|sidebar/info"/> + +<xsl:template match="sidebar/title|sidebarinfo/title|sidebar/info/title" +              mode="titlepage.mode" priority="1"> +  <fo:block xsl:use-attribute-sets="sidebar.title.properties"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template name="margin.note"> +  <xsl:param name="content"> +    <fo:block xsl:use-attribute-sets="margin.note.properties"> +      <xsl:if test="./title"> +        <fo:block xsl:use-attribute-sets="margin.note.title.properties"> +          <xsl:apply-templates select="./title" mode="margin.note.title.mode"/> +        </fo:block> +      </xsl:if> +      <xsl:apply-templates/> +    </fo:block> +  </xsl:param> + +  <xsl:variable name="pi-width"> +    <xsl:call-template name="pi.dbfo_sidebar-width"/> +  </xsl:variable> + +  <xsl:variable name="position" select="$margin.note.float.type"/> + +  <xsl:call-template name="floater"> +    <xsl:with-param name="content" select="$content"/> +    <xsl:with-param name="position" select="$position"/> +    <xsl:with-param name="width" > +      <xsl:choose> +        <xsl:when test="$pi-width != ''"> +          <xsl:value-of select="$pi-width"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:value-of select="$margin.note.width"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:with-param> +    <xsl:with-param name="start.indent"> +      <xsl:choose> +        <xsl:when test="$position = 'start' or  +                        $position = 'left'">0pt</xsl:when> +        <xsl:when test="$position = 'end' or  +                        $position = 'right'">0.5em</xsl:when> +        <xsl:otherwise>0pt</xsl:otherwise> +      </xsl:choose> +    </xsl:with-param> +    <xsl:with-param name="end.indent"> +      <xsl:choose> +        <xsl:when test="$position = 'start' or  +                        $position = 'left'">0.5em</xsl:when> +        <xsl:when test="$position = 'end' or  +                        $position = 'right'">0pt</xsl:when> +        <xsl:otherwise>0pt</xsl:otherwise> +      </xsl:choose> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="sidebar/title" mode="margin.note.title.mode"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="abstract"> +  <fo:block xsl:use-attribute-sets="abstract.properties"> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="abstract/title|abstract/info/title"> +  <fo:block xsl:use-attribute-sets="abstract.title.properties"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="msgset"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgentry"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="simplemsgentry"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msg"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msgmain"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgsub"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgrel"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgtext"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msginfo"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msglevel"> +  <fo:block> +    <fo:inline font-weight="bold" +               keep-with-next.within-line="always"> +      <xsl:call-template name="gentext.template"> +        <xsl:with-param name="context" select="'msgset'"/> +        <xsl:with-param name="name" select="'MsgLevel'"/> +      </xsl:call-template> +    </fo:inline> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="msgorig"> +  <fo:block> +    <fo:inline font-weight="bold" +               keep-with-next.within-line="always"> +      <xsl:call-template name="gentext.template"> +        <xsl:with-param name="context" select="'msgset'"/> +        <xsl:with-param name="name" select="'MsgOrig'"/> +      </xsl:call-template> +    </fo:inline> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="msgaud"> +  <fo:block> +    <fo:inline font-weight="bold" +               keep-with-next.within-line="always"> +      <xsl:call-template name="gentext.template"> +        <xsl:with-param name="context" select="'msgset'"/> +        <xsl:with-param name="name" select="'MsgAud'"/> +      </xsl:call-template> +    </fo:inline> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="msgexplan"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msgexplan/title"> +  <fo:block font-weight="bold" +            keep-with-next.within-column="always" +            hyphenate="false"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> +<!-- For better or worse, revhistory is allowed in content... --> + +<xsl:template match="revhistory"> +  <fo:table table-layout="fixed" xsl:use-attribute-sets="revhistory.table.properties"> +    <xsl:call-template name="anchor"/> +    <fo:table-column column-number="1" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="2" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="3" column-width="proportional-column-width(1)"/> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <fo:table-row> +        <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties"> +          <fo:block xsl:use-attribute-sets="revhistory.title.properties"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'RevHistory'"/> +            </xsl:call-template> +          </fo:block> +        </fo:table-cell> +      </fo:table-row> +      <xsl:apply-templates/> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template match="revhistory/revision"> +  <xsl:variable name="revnumber" select="revnumber"/> +  <xsl:variable name="revdate"   select="date"/> +  <xsl:variable name="revauthor" select="authorinitials|author"/> +  <xsl:variable name="revremark" select="revremark|revdescription"/> +  <fo:table-row> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:call-template name="anchor"/> +        <xsl:if test="$revnumber"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'Revision'"/> +          </xsl:call-template> +          <xsl:call-template name="gentext.space"/> +          <xsl:apply-templates select="$revnumber[1]"/> +        </xsl:if> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:apply-templates select="$revdate[1]"/> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:for-each select="$revauthor"> +          <xsl:apply-templates select="."/> +          <xsl:if test="position() != last()"> +            <xsl:text>, </xsl:text> +          </xsl:if> +        </xsl:for-each> +      </fo:block> +    </fo:table-cell> +  </fo:table-row> +  <xsl:if test="$revremark"> +    <fo:table-row> +      <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties"> +        <fo:block> +          <xsl:apply-templates select="$revremark[1]"/> +        </fo:block> +      </fo:table-cell> +    </fo:table-row> +  </xsl:if> +</xsl:template> + +<xsl:template match="revision/revnumber"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/date"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/authorinitials"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/author"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/revremark"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/revdescription"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="ackno"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="highlights"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/callout.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/callout.xsl.svn-base new file mode 100644 index 0000000..e3d70b4 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/callout.xsl.svn-base @@ -0,0 +1,231 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" +                xmlns:xverb="com.nwalsh.xalan.Verbatim" +                xmlns:lxslt="http://xml.apache.org/xslt" +                exclude-result-prefixes="sverb xverb lxslt" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<lxslt:component prefix="xverb" +                 functions="insertCallouts"/> + +<xsl:template match="programlistingco|screenco"> +  <xsl:variable name="verbatim" select="programlisting|screen"/> +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> + +  <xsl:choose> +    <xsl:when test="$use.extensions != '0' +                    and $callouts.extension != '0'"> +      <xsl:variable name="rtf"> +        <xsl:apply-templates select="$verbatim"> +          <xsl:with-param name="suppress-numbers" select="'1'"/> +        </xsl:apply-templates> +      </xsl:variable> + +      <xsl:variable name="rtf-with-callouts"> +        <xsl:choose> +          <xsl:when test="contains($vendor, 'SAXON ')"> +            <xsl:copy-of select="sverb:insertCallouts(areaspec,$rtf)"/> +          </xsl:when> +          <xsl:when test="contains($vendor, 'Apache Software Foundation')"> +            <xsl:copy-of select="xverb:insertCallouts(areaspec,$rtf)"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:message terminate="yes"> +              <xsl:text>Don't know how to do callouts with </xsl:text> +              <xsl:value-of select="$vendor"/> +            </xsl:message> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$verbatim/@linenumbering = 'numbered' +                        and $linenumbering.extension != '0'"> +          <xsl:call-template name="number.rtf.lines"> +            <xsl:with-param name="rtf" select="$rtf-with-callouts"/> +            <xsl:with-param name="pi.context" +                            select="programlisting|screen"/> +          </xsl:call-template> +          <xsl:apply-templates select="calloutlist"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:copy-of select="$rtf-with-callouts"/> +          <xsl:apply-templates select="calloutlist"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="areaspec|areaset|area"> +</xsl:template> + +<xsl:template match="areaset" mode="conumber"> +  <xsl:number count="area|areaset" format="1"/> +</xsl:template> + +<xsl:template match="area" mode="conumber"> +  <xsl:number count="area|areaset" format="1"/> +</xsl:template> + +<xsl:template match="co"> +  <fo:inline> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates select="." mode="callout-bug"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="coref"> +  <!-- tricky; this relies on the fact that we can process the "co" that's --> +  <!-- "over there" as if it were "right here" --> + +  <xsl:variable name="co" select="key('id', @linkend)"/> +  <xsl:choose> +    <xsl:when test="not($co)"> +      <xsl:message> +        <xsl:text>Error: coref link is broken: </xsl:text> +        <xsl:value-of select="@linkend"/> +      </xsl:message> +    </xsl:when> +    <xsl:when test="local-name($co) != 'co'"> +      <xsl:message> +        <xsl:text>Error: coref doesn't point to a co: </xsl:text> +        <xsl:value-of select="@linkend"/> +      </xsl:message> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline> +        <xsl:call-template name="anchor"/> +        <xsl:apply-templates select="$co" mode="callout-bug"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="co" mode="callout-bug"> +  <xsl:call-template name="callout-bug"> +    <xsl:with-param name="conum"> +      <xsl:number count="co" +                  level="any" +                  from="programlisting|screen|literallayout|synopsis" +                  format="1"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="callout-bug"> +  <xsl:param name="conum" select='1'/> + +  <xsl:choose> +    <!-- Draw callouts as images --> +    <xsl:when test="$callout.graphics != '0' +                    and $conum <= $callout.graphics.number.limit"> +      <xsl:variable name="filename" +                    select="concat($callout.graphics.path, $conum, +		                   $callout.graphics.extension)"/> + +      <fo:external-graphic content-width="{$callout.icon.size}" +                           width="{$callout.icon.size}"> +        <xsl:attribute name="src"> +          <xsl:choose> +            <xsl:when test="$passivetex.extensions != 0 +                            or $fop.extensions != 0 +                            or $arbortext.extensions != 0"> +              <xsl:value-of select="$filename"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:text>url(</xsl:text> +              <xsl:value-of select="$filename"/> +              <xsl:text>)</xsl:text> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:attribute> +      </fo:external-graphic> +    </xsl:when> + +    <xsl:when test="$callout.unicode != 0 +                    and $conum <= $callout.unicode.number.limit"> +      <xsl:variable name="comarkup"> +        <xsl:choose> +          <xsl:when test="$callout.unicode.start.character = 10102"> +            <xsl:choose> +              <xsl:when test="$conum = 1">❶</xsl:when> +              <xsl:when test="$conum = 2">❷</xsl:when> +              <xsl:when test="$conum = 3">❸</xsl:when> +              <xsl:when test="$conum = 4">❹</xsl:when> +              <xsl:when test="$conum = 5">❺</xsl:when> +              <xsl:when test="$conum = 6">❻</xsl:when> +              <xsl:when test="$conum = 7">❼</xsl:when> +              <xsl:when test="$conum = 8">❽</xsl:when> +              <xsl:when test="$conum = 9">❾</xsl:when> +              <xsl:when test="$conum = 10">❿</xsl:when> +            </xsl:choose> +          </xsl:when> +          <xsl:otherwise> +            <xsl:message> +              <xsl:text>Don't know how to generate Unicode callouts </xsl:text> +              <xsl:text>when $callout.unicode.start.character is </xsl:text> +              <xsl:value-of select="$callout.unicode.start.character"/> +            </xsl:message> +            <fo:inline background-color="#404040" +                       color="white" +                       padding-top="0.1em" +                       padding-bottom="0.1em" +                       padding-start="0.2em" +                       padding-end="0.2em" +                       baseline-shift="0.1em" +                       font-family="{$body.fontset}" +                       font-weight="bold" +                       font-size="75%"> +              <xsl:value-of select="$conum"/> +            </fo:inline> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$callout.unicode.font != ''"> +          <fo:inline font-family="{$callout.unicode.font}"> +            <xsl:copy-of select="$comarkup"/> +          </fo:inline> +        </xsl:when> +        <xsl:otherwise> +          <xsl:copy-of select="$comarkup"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <!-- Most safe: draw a dark gray square with a white number inside --> +    <xsl:otherwise> +      <fo:inline background-color="#404040" +                 color="white" +                 padding-top="0.1em" +                 padding-bottom="0.1em" +                 padding-start="0.2em" +                 padding-end="0.2em" +                 baseline-shift="0.1em" +                 font-family="{$body.fontset}" +                 font-weight="bold" +                 font-size="75%"> +        <xsl:value-of select="$conum"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/component.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/component.xsl.svn-base new file mode 100644 index 0000000..af1f1e4 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/component.xsl.svn-base @@ -0,0 +1,797 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + + +<xsl:template name="component.title"> +  <xsl:param name="node" select="."/> +  <xsl:param name="pagewide" select="0"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$node"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="title"> +    <xsl:apply-templates select="$node" mode="object.title.markup"> +      <xsl:with-param name="allow-anchors" select="1"/> +    </xsl:apply-templates> +  </xsl:variable> + +  <xsl:variable name="titleabbrev"> +    <xsl:apply-templates select="$node" mode="titleabbrev.markup"/> +  </xsl:variable> + +  <xsl:variable name="level"> +    <xsl:choose> +      <xsl:when test="ancestor::section"> +        <xsl:value-of select="count(ancestor::section)+1"/> +      </xsl:when> +      <xsl:when test="ancestor::sect5">6</xsl:when> +      <xsl:when test="ancestor::sect4">5</xsl:when> +      <xsl:when test="ancestor::sect3">4</xsl:when> +      <xsl:when test="ancestor::sect2">3</xsl:when> +      <xsl:when test="ancestor::sect1">2</xsl:when> +      <xsl:otherwise>1</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="$passivetex.extensions != 0"> +    <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex" +                    fotex-bookmark-level="2" +                    fotex-bookmark-label="{$id}"> +      <xsl:value-of select="$titleabbrev"/> +    </fotex:bookmark> +  </xsl:if> + +  <fo:block xsl:use-attribute-sets="component.title.properties"> +    <xsl:if test="$pagewide != 0"> +      <!-- Doesn't work to use 'all' here since not a child of fo:flow --> +      <xsl:attribute name="span">inherit</xsl:attribute> +    </xsl:if> +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:outline-level"> +        <xsl:value-of select="count($node/ancestor::*)"/> +      </xsl:attribute> +      <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +      <xsl:attribute name="axf:outline-title"> +        <xsl:value-of select="normalize-space($title)"/> +      </xsl:attribute> +    </xsl:if> + +    <!-- Let's handle the case where a component (bibliography, for example) +         occurs inside a section; will we need parameters for this? +         Danger Will Robinson: using section.title.level*.properties here +         runs the risk that someone will set something other than +         font-size there... --> +    <xsl:choose> +      <xsl:when test="$level=2"> +        <fo:block xsl:use-attribute-sets="section.title.level2.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=3"> +        <fo:block xsl:use-attribute-sets="section.title.level3.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=4"> +        <fo:block xsl:use-attribute-sets="section.title.level4.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=5"> +        <fo:block xsl:use-attribute-sets="section.title.level5.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=6"> +        <fo:block xsl:use-attribute-sets="section.title.level6.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <!-- not in a section: do nothing special --> +        <xsl:copy-of select="$title"/> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="dedication" mode="dedication"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="dedication.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="dedication"></xsl:template> <!-- see mode="dedication" --> +<xsl:template match="dedication/docinfo"></xsl:template> +<xsl:template match="dedication/title"></xsl:template> +<xsl:template match="dedication/subtitle"></xsl:template> +<xsl:template match="dedication/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="colophon"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="colophon.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="colophon/title"></xsl:template> +<xsl:template match="colophon/subtitle"></xsl:template> +<xsl:template match="colophon/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="preface"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="preface.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table"  +                          select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:if test="contains($toc.params, 'toc')"> +        <xsl:call-template name="component.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="component.toc.separator"/> +      </xsl:if> + +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="preface/docinfo|prefaceinfo"></xsl:template> +<xsl:template match="preface/info"></xsl:template> +<xsl:template match="preface/title"></xsl:template> +<xsl:template match="preface/titleabbrev"></xsl:template> +<xsl:template match="preface/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="chapter"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="chapter.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:if test="contains($toc.params, 'toc')"> +        <xsl:call-template name="component.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="component.toc.separator"/> +      </xsl:if> +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="chapter/docinfo|chapterinfo"></xsl:template> +<xsl:template match="chapter/info"></xsl:template> +<xsl:template match="chapter/title"></xsl:template> +<xsl:template match="chapter/titleabbrev"></xsl:template> +<xsl:template match="chapter/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="appendix"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="appendix.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc')"> +        <xsl:call-template name="component.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="component.toc.separator"/> +      </xsl:if> +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="appendix/docinfo|appendixinfo"></xsl:template> +<xsl:template match="appendix/info"></xsl:template> +<xsl:template match="appendix/title"></xsl:template> +<xsl:template match="appendix/titleabbrev"></xsl:template> +<xsl:template match="appendix/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="article"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="article.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc')"> +        <xsl:call-template name="component.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="component.toc.separator"/> +      </xsl:if> +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="article/artheader"></xsl:template> +<xsl:template match="article/articleinfo"></xsl:template> +<xsl:template match="article/info"></xsl:template> +<xsl:template match="article/title"></xsl:template> +<xsl:template match="article/subtitle"></xsl:template> +<xsl:template match="article/titleabbrev"></xsl:template> + +<xsl:template match="article/appendix"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="title"> +    <xsl:apply-templates select="." mode="object.title.markup"/> +  </xsl:variable> + +  <xsl:variable name="titleabbrev"> +    <xsl:apply-templates select="." mode="titleabbrev.markup"/> +  </xsl:variable> + +  <fo:block id='{$id}'> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:outline-level"> +        <xsl:value-of select="count(ancestor::*)+2"/> +      </xsl:attribute> +      <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +      <xsl:attribute name="axf:outline-title"> +        <xsl:value-of select="normalize-space($titleabbrev)"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:if test="$passivetex.extensions != 0"> +      <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"  +                      fotex-bookmark-level="{count(ancestor::*)+2}"  +                      fotex-bookmark-label="{$id}"> +        <xsl:value-of select="$titleabbrev"/> +      </fotex:bookmark> +    </xsl:if> + +    <fo:block xsl:use-attribute-sets="article.appendix.title.properties"> +      <fo:marker marker-class-name="section.head.marker"> +        <xsl:choose> +          <xsl:when test="$titleabbrev = ''"> +            <xsl:value-of select="$title"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$titleabbrev"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:marker> +      <xsl:copy-of select="$title"/> +    </fo:block> + +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- Utility template to create a page sequence for an element --> +<xsl:template match="*" mode="page.sequence" name="page.sequence"> +  <xsl:param name="content"> +    <xsl:apply-templates/> +  </xsl:param> +  <xsl:param name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:param> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="gentext-key" select="local-name(.)"/> +  <xsl:param name="language"> +    <xsl:call-template name="l10n.language"/> +  </xsl:param> + +  <xsl:param name="format"> +    <xsl:call-template name="page.number.format"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +      <xsl:with-param name="element" select="$element"/> +    </xsl:call-template> +  </xsl:param> + +  <xsl:param name="initial-page-number"> +    <xsl:call-template name="initial.page.number"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +      <xsl:with-param name="element" select="$element"/> +    </xsl:call-template> +  </xsl:param> + +  <xsl:param name="force-page-count"> +    <xsl:call-template name="force.page.count"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +      <xsl:with-param name="element" select="$element"/> +    </xsl:call-template> +  </xsl:param> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:value-of select="$language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:value-of select="$format"/> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:value-of select="$initial-page-number"/> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:value-of select="$force-page-count"/> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +      <xsl:with-param name="gentext-key" select="$gentext-key"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +      <xsl:with-param name="gentext-key" select="$gentext-key"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <xsl:copy-of select="$content"/> + +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/division.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/division.xsl.svn-base new file mode 100644 index 0000000..0b53b77 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/division.xsl.svn-base @@ -0,0 +1,611 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template name="division.title"> +  <xsl:param name="node" select="."/> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$node"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:variable name="title"> +    <xsl:apply-templates select="$node" mode="object.title.markup"/> +  </xsl:variable> + +  <xsl:if test="$passivetex.extensions != 0"> +    <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex" +                    fotex-bookmark-level="1" +                    fotex-bookmark-label="{$id}"> +      <xsl:value-of select="$title"/> +    </fotex:bookmark> +  </xsl:if> + +  <fo:block keep-with-next.within-column="always" +            hyphenate="false"> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:outline-level"> +        <xsl:choose> +          <xsl:when test="count($node/ancestor::*) > 0"> +            <xsl:value-of select="count($node/ancestor::*)"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +      <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +      <xsl:attribute name="axf:outline-title"> +        <xsl:value-of select="normalize-space($title)"/> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$title"/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="set"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="preamble" +                select="*[not(self::book or self::setindex)]"/> + +  <xsl:variable name="content" select="book|setindex"/> + +  <xsl:variable name="titlepage-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'titlepage'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="lot-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'lot'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:if test="$preamble"> +    <fo:page-sequence hyphenate="{$hyphenate}" +                      master-reference="{$titlepage-master-reference}"> +      <xsl:attribute name="language"> +        <xsl:call-template name="l10n.language"/> +      </xsl:attribute> +      <xsl:attribute name="format"> +        <xsl:call-template name="page.number.format"> +          <xsl:with-param name="master-reference"  +                          select="$titlepage-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="initial-page-number"> +        <xsl:call-template name="initial.page.number"> +          <xsl:with-param name="master-reference"  +                          select="$titlepage-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="force-page-count"> +        <xsl:call-template name="force.page.count"> +          <xsl:with-param name="master-reference"  +                          select="$titlepage-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="hyphenation-character"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-character'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-push-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-remain-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:apply-templates select="." mode="running.head.mode"> +        <xsl:with-param name="master-reference" select="$titlepage-master-reference"/> +      </xsl:apply-templates> + +      <xsl:apply-templates select="." mode="running.foot.mode"> +        <xsl:with-param name="master-reference" select="$titlepage-master-reference"/> +      </xsl:apply-templates> + +      <fo:flow flow-name="xsl-region-body"> +        <xsl:call-template name="set.flow.properties"> +          <xsl:with-param name="element" select="local-name(.)"/> +          <xsl:with-param name="master-reference"  +                          select="$titlepage-master-reference"/> +        </xsl:call-template> + +        <fo:block id="{$id}"> +          <xsl:call-template name="set.titlepage"/> +        </fo:block> +      </fo:flow> +    </fo:page-sequence> +  </xsl:if> + +  <xsl:variable name="toc.params"> +    <xsl:call-template name="find.path.params"> +      <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:if test="contains($toc.params, 'toc')"> +    <fo:page-sequence hyphenate="{$hyphenate}" +                      master-reference="{$lot-master-reference}"> +      <xsl:attribute name="language"> +        <xsl:call-template name="l10n.language"/> +      </xsl:attribute> +      <xsl:attribute name="format"> +        <xsl:call-template name="page.number.format"> +          <xsl:with-param name="element" select="'toc'"/> +          <xsl:with-param name="master-reference" +                          select="$lot-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="initial-page-number"> +        <xsl:call-template name="initial.page.number"> +          <xsl:with-param name="master-reference" +                          select="$lot-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="force-page-count"> +        <xsl:call-template name="force.page.count"> +          <xsl:with-param name="master-reference" +                          select="$lot-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="hyphenation-character"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-character'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-push-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-remain-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:apply-templates select="." mode="running.head.mode"> +        <xsl:with-param name="master-reference" select="$lot-master-reference"/> +      </xsl:apply-templates> + +      <xsl:apply-templates select="." mode="running.foot.mode"> +        <xsl:with-param name="master-reference" select="$lot-master-reference"/> +      </xsl:apply-templates> + +      <fo:flow flow-name="xsl-region-body"> +        <xsl:call-template name="set.flow.properties"> +          <xsl:with-param name="element" select="local-name(.)"/> +          <xsl:with-param name="master-reference"  +                          select="$lot-master-reference"/> +        </xsl:call-template> + +        <xsl:call-template name="set.toc"/> +      </fo:flow> +    </fo:page-sequence> +  </xsl:if> + +  <xsl:apply-templates select="$content"/> +</xsl:template> + +<xsl:template match="set/setinfo"></xsl:template> +<xsl:template match="set/title"></xsl:template> +<xsl:template match="set/subtitle"></xsl:template> +<xsl:template match="set/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="book"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="preamble" +                select="title|subtitle|titleabbrev|bookinfo|info"/> + +  <xsl:variable name="content" +                select="node()[not(self::title or self::subtitle +                            or self::titleabbrev +                            or self::info +                            or self::bookinfo)]"/> + +  <xsl:variable name="titlepage-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'titlepage'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="front.cover"/> + +  <xsl:if test="$preamble"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$titlepage-master-reference"/> +      <xsl:with-param name="content"> +        <fo:block id="{$id}"> +          <xsl:call-template name="book.titlepage"/> +        </fo:block> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:apply-templates select="dedication" mode="dedication"/> + +  <xsl:call-template name="make.book.tocs"/> + +  <xsl:apply-templates select="$content"/> + +  <xsl:call-template name="back.cover"/> + +</xsl:template> + +<xsl:template match="book/bookinfo"></xsl:template> +<xsl:template match="book/info"></xsl:template> +<xsl:template match="book/title"></xsl:template> +<xsl:template match="book/subtitle"></xsl:template> +<xsl:template match="book/titleabbrev"></xsl:template> + +<!-- Placeholder templates --> +<xsl:template name="front.cover"/> +<xsl:template name="back.cover"/> + +<!-- ================================================================= --> +<xsl:template name="make.book.tocs"> + +  <xsl:variable name="lot-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'lot'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="toc.params"> +    <xsl:call-template name="find.path.params"> +      <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:if test="contains($toc.params, 'toc')"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'TableofContents'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="division.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:if test="contains($toc.params,'figure') and .//figure"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'ListofFigures'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="list.of.titles"> +          <xsl:with-param name="titles" select="'figure'"/> +          <xsl:with-param name="nodes" select=".//figure"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:if test="contains($toc.params,'table') and .//table"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'ListofTables'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="list.of.titles"> +          <xsl:with-param name="titles" select="'table'"/> +          <xsl:with-param name="nodes" select=".//table"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:if test="contains($toc.params,'example') and .//example"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'ListofExample'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="list.of.titles"> +          <xsl:with-param name="titles" select="'example'"/> +          <xsl:with-param name="nodes" select=".//example"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:if test="contains($toc.params,'equation') and  +                 .//equation[title or info/title]"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'ListofEquations'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="list.of.titles"> +          <xsl:with-param name="titles" select="'equation'"/> +          <xsl:with-param name="nodes"  +                          select=".//equation[title or info/title]"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:if test="contains($toc.params,'procedure') and  +                 .//procedure[title or info/title]"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'ListofProcedures'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="list.of.titles"> +          <xsl:with-param name="titles" select="'procedure'"/> +          <xsl:with-param name="nodes"  +                          select=".//procedure[title or info/title]"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> +</xsl:template> +<!-- ==================================================================== --> + +<xsl:template match="part"> +  <xsl:if test="not(partintro)"> +    <xsl:apply-templates select="." mode="part.titlepage.mode"/> +    <xsl:call-template name="generate.part.toc"/> +  </xsl:if> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="part" mode="part.titlepage.mode"> +  <!-- done this way to force the context node to be the part --> +  <xsl:param name="additional.content"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="titlepage-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'titlepage'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$titlepage-master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference"  +                        select="$titlepage-master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference"  +                        select="$titlepage-master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference"  +                        select="$titlepage-master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$titlepage-master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$titlepage-master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference"  +                        select="$titlepage-master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}"> +        <xsl:call-template name="part.titlepage"/> +      </fo:block> +      <xsl:copy-of select="$additional.content"/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="part/docinfo|partinfo"></xsl:template> +<xsl:template match="part/info"></xsl:template> +<xsl:template match="part/title"></xsl:template> +<xsl:template match="part/subtitle"></xsl:template> +<xsl:template match="part/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="generate.part.toc"> +  <xsl:param name="part" select="."/> + +  <xsl:variable name="lot-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'lot'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="toc.params"> +    <xsl:call-template name="find.path.params"> +      <xsl:with-param name="node" select="$part"/> +      <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" select="reference| +                                     preface| +                                     chapter| +                                     appendix| +                                     article| +                                     bibliography| +                                     glossary| +                                     index"/> + +  <xsl:if test="count($nodes) > 0 and contains($toc.params, 'toc')"> +    <fo:page-sequence hyphenate="{$hyphenate}" +                      master-reference="{$lot-master-reference}"> +      <xsl:attribute name="language"> +        <xsl:call-template name="l10n.language"/> +      </xsl:attribute> +      <xsl:attribute name="format"> +        <xsl:call-template name="page.number.format"> +          <xsl:with-param name="element" select="'toc'"/> +          <xsl:with-param name="master-reference"  +                          select="$lot-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="initial-page-number"> +        <xsl:call-template name="initial.page.number"> +          <xsl:with-param name="element" select="'toc'"/> +          <xsl:with-param name="master-reference"  +                          select="$lot-master-reference"/> +         </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="force-page-count"> +        <xsl:call-template name="force.page.count"> +          <xsl:with-param name="master-reference"  +                          select="$lot-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="hyphenation-character"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-character'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-push-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-remain-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:apply-templates select="$part" mode="running.head.mode"> +        <xsl:with-param name="master-reference" select="$lot-master-reference"/> +      </xsl:apply-templates> + +      <xsl:apply-templates select="$part" mode="running.foot.mode"> +        <xsl:with-param name="master-reference" select="$lot-master-reference"/> +      </xsl:apply-templates> + +      <fo:flow flow-name="xsl-region-body"> +        <xsl:call-template name="set.flow.properties"> +          <xsl:with-param name="element" select="local-name(.)"/> +          <xsl:with-param name="master-reference"  +                          select="$lot-master-reference"/> +        </xsl:call-template> + +        <xsl:call-template name="division.toc"> +          <xsl:with-param name="toc-context" select="$part"/> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> + +      </fo:flow> +    </fo:page-sequence> +  </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="part/partintro"> +  <xsl:apply-templates select=".." mode="part.titlepage.mode"> +    <xsl:with-param name="additional.content"> +      <xsl:if test="title"> +        <xsl:call-template name="partintro.titlepage"/> +      </xsl:if> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:apply-templates> + +  <xsl:call-template name="generate.part.toc"> +    <xsl:with-param name="part" select=".."/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="partintro/title"></xsl:template> +<xsl:template match="partintro/subtitle"></xsl:template> +<xsl:template match="partintro/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="book" mode="division.number"> +  <xsl:number from="set" count="book" format="1."/> +</xsl:template> + +<xsl:template match="part" mode="division.number"> +  <xsl:number from="book" count="part" format="I."/> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/docbook.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/docbook.xsl.svn-base new file mode 100644 index 0000000..5edfb57 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/docbook.xsl.svn-base @@ -0,0 +1,331 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:exsl="http://exslt.org/common" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:ng="http://docbook.org/docbook-ng" +                xmlns:db="http://docbook.org/ns/docbook" +                exclude-result-prefixes="db ng exsl" +                version='1.0'> + +<!-- It is important to use indent="no" here, otherwise verbatim --> +<!-- environments get broken by indented tags...at least when the --> +<!-- callout extension is used...at least with some processors --> +<xsl:output method="xml" indent="no"/> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:include href="../VERSION"/> +<xsl:include href="param.xsl"/> +<xsl:include href="../lib/lib.xsl"/> +<xsl:include href="../common/l10n.xsl"/> +<xsl:include href="../common/common.xsl"/> +<xsl:include href="../common/utility.xsl"/> +<xsl:include href="../common/labels.xsl"/> +<xsl:include href="../common/titles.xsl"/> +<xsl:include href="../common/subtitles.xsl"/> +<xsl:include href="../common/gentext.xsl"/> +<xsl:include href="../common/olink.xsl"/> +<xsl:include href="../common/targets.xsl"/> +<xsl:include href="../common/pi.xsl"/> +<xsl:include href="autotoc.xsl"/> +<xsl:include href="autoidx.xsl"/> +<xsl:include href="lists.xsl"/> +<xsl:include href="callout.xsl"/> +<xsl:include href="verbatim.xsl"/> +<xsl:include href="graphics.xsl"/> +<xsl:include href="xref.xsl"/> +<xsl:include href="formal.xsl"/> +<xsl:include href="table.xsl"/> +<xsl:include href="htmltbl.xsl"/> +<xsl:include href="sections.xsl"/> +<xsl:include href="inline.xsl"/> +<xsl:include href="footnote.xsl"/> +<xsl:include href="fo.xsl"/> +<xsl:include href="fo-rtf.xsl"/> +<xsl:include href="info.xsl"/> +<xsl:include href="keywords.xsl"/> +<xsl:include href="division.xsl"/> +<xsl:include href="index.xsl"/> +<xsl:include href="toc.xsl"/> +<xsl:include href="refentry.xsl"/> +<xsl:include href="math.xsl"/> +<xsl:include href="admon.xsl"/> +<xsl:include href="component.xsl"/> +<xsl:include href="biblio.xsl"/> +<xsl:include href="biblio-iso690.xsl"/> +<xsl:include href="glossary.xsl"/> +<xsl:include href="block.xsl"/> +<xsl:include href="task.xsl"/> +<xsl:include href="qandaset.xsl"/> +<xsl:include href="synop.xsl"/> +<xsl:include href="titlepage.xsl"/> +<xsl:include href="titlepage.templates.xsl"/> +<xsl:include href="pagesetup.xsl"/> +<xsl:include href="pi.xsl"/> +<xsl:include href="spaces.xsl"/> +<xsl:include href="ebnf.xsl"/> +<xsl:include href="../html/chunker.xsl"/> +<xsl:include href="annotations.xsl"/> +<xsl:include href="../common/stripns.xsl"/> + +<xsl:include href="fop.xsl"/> +<xsl:include href="fop1.xsl"/> +<xsl:include href="passivetex.xsl"/> +<xsl:include href="xep.xsl"/> +<xsl:include href="axf.xsl"/> +<xsl:include href="ptc.xsl"/> + +<xsl:param name="stylesheet.result.type" select="'fo'"/> + +<!-- ==================================================================== --> + +<xsl:key name="id" match="*" use="@id|@xml:id"/> + +<!-- ==================================================================== --> + +<xsl:template match="*"> +  <xsl:message> +    <xsl:value-of select="name(.)"/> +    <xsl:text> encountered</xsl:text> +    <xsl:if test="parent::*"> +      <xsl:text> in </xsl:text> +      <xsl:value-of select="name(parent::*)"/> +    </xsl:if> +    <xsl:text>, but no template matches.</xsl:text> +  </xsl:message> +  <fo:block color="red"> +    <xsl:text><</xsl:text> +    <xsl:value-of select="name(.)"/> +    <xsl:text>></xsl:text> +    <xsl:apply-templates/>  +    <xsl:text></</xsl:text> +    <xsl:value-of select="name(.)"/> +    <xsl:text>></xsl:text> +  </fo:block> +</xsl:template> + +<!-- Update this list if new root elements supported --> +<xsl:variable name="root.elements" select="' appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex '"/> + +<xsl:template match="/"> +  <!-- * Get a title for current doc so that we let the user --> +  <!-- * know what document we are processing at this point. --> +  <xsl:variable name="doc.title"> +    <xsl:call-template name="get.doc.title"/> +  </xsl:variable> +  <xsl:choose> +    <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document, +         toss the namespace and continue.  Use the docbook5 namespaced +         stylesheets for DocBook5 if you don't want to use this feature.--> +    <!-- 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:variable name="root.element" select="key('id', $rootid)"/> +          <xsl:choose> +            <xsl:when test="count($root.element) = 0"> +              <xsl:message terminate="yes"> +                <xsl:text>ID '</xsl:text> +                <xsl:value-of select="$rootid"/> +                <xsl:text>' not found in document.</xsl:text> +              </xsl:message> +            </xsl:when> +            <xsl:when test="not(contains($root.elements, concat(' ', local-name($root.element), ' ')))"> +              <xsl:message terminate="yes"> +                <xsl:text>ERROR: Document root element ($rootid=</xsl:text> +                <xsl:value-of select="$rootid"/> +                <xsl:text>) for FO output </xsl:text> +                <xsl:text>must be one of the following elements:</xsl:text> +                <xsl:value-of select="$root.elements"/> +              </xsl:message> +            </xsl:when> +            <!-- Otherwise proceed --> +            <xsl:otherwise> +              <xsl:if test="$collect.xref.targets = 'yes' or +                            $collect.xref.targets = 'only'"> +                <xsl:apply-templates select="$root.element" +                                     mode="collect.targets"/> +              </xsl:if> +              <xsl:if test="$collect.xref.targets != 'only'"> +                <xsl:apply-templates select="$root.element" +                                     mode="process.root"/> +              </xsl:if> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <!-- Otherwise process the document root element --> +        <xsl:otherwise> +          <xsl:variable name="document.element" select="*[1]"/> +          <xsl:choose> +            <xsl:when test="not(contains($root.elements, +                     concat(' ', local-name($document.element), ' ')))"> +              <xsl:message terminate="yes"> +                <xsl:text>ERROR: Document root element for FO output </xsl:text> +                <xsl:text>must be one of the following elements:</xsl:text> +                <xsl:value-of select="$root.elements"/> +              </xsl:message> +            </xsl:when> +            <!-- Otherwise proceed --> +            <xsl:otherwise> +              <xsl:if test="$collect.xref.targets = 'yes' or +                            $collect.xref.targets = 'only'"> +                <xsl:apply-templates select="/" +                                     mode="collect.targets"/> +              </xsl:if> +              <xsl:if test="$collect.xref.targets != 'only'"> +                <xsl:apply-templates select="/" +                                     mode="process.root"/> +              </xsl:if> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="process.root"> +  <xsl:variable name="document.element" select="self::*"/> + +  <xsl:call-template name="root.messages"/> + +  <xsl:variable name="title"> +    <xsl:choose> +      <xsl:when test="$document.element/title[1]"> +        <xsl:value-of select="$document.element/title[1]"/> +      </xsl:when> +      <xsl:otherwise>[could not find document title]</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +   +  <!-- Include all id values in XEP output --> +  <xsl:if test="$xep.extensions != 0"> +    <xsl:processing-instruction  +     name="xep-pdf-drop-unused-destinations">false</xsl:processing-instruction> +  </xsl:if> + +  <fo:root xsl:use-attribute-sets="root.properties"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"> +        <xsl:with-param name="target" select="/*[1]"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:if test="$xep.extensions != 0"> +      <xsl:call-template name="xep-pis"/> +      <xsl:call-template name="xep-document-information"/> +    </xsl:if> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:call-template name="axf-document-information"/> +    </xsl:if> + +    <xsl:call-template name="setup.pagemasters"/> + +    <xsl:if test="$fop.extensions != 0"> +      <xsl:apply-templates select="$document.element" mode="fop.outline"/> +    </xsl:if> + +    <xsl:if test="$fop1.extensions != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element"  +                             mode="fop1.outline"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <fo:bookmark-tree> +          <xsl:copy-of select="$bookmarks"/> +        </fo:bookmark-tree> +      </xsl:if> +    </xsl:if> + +    <xsl:if test="$xep.extensions != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element" mode="xep.outline"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions"> +          <xsl:copy-of select="$bookmarks"/> +        </rx:outline> +      </xsl:if> +    </xsl:if> + +    <xsl:if test="$arbortext.extensions != 0 and $ati.xsl11.bookmarks != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element" +                             mode="ati.xsl11.bookmarks"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <fo:bookmark-tree> +          <xsl:copy-of select="$bookmarks"/> +        </fo:bookmark-tree> +      </xsl:if> +    </xsl:if> + +    <xsl:apply-templates select="$document.element"/> +  </fo:root> +</xsl:template> + +<xsl:template name="root.messages"> +  <!-- redefine this any way you'd like to output messages --> +  <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE --> +  <xsl:message> +    <xsl:text>Making </xsl:text> +    <xsl:value-of select="$page.orientation"/> +    <xsl:text> pages on </xsl:text> +    <xsl:value-of select="$paper.type"/> +    <xsl:text> paper (</xsl:text> +    <xsl:value-of select="$page.width"/> +    <xsl:text>x</xsl:text> +    <xsl:value-of select="$page.height"/> +    <xsl:text>)</xsl:text> +  </xsl:message> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/ebnf.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/ebnf.xsl.svn-base new file mode 100644 index 0000000..d9cc04a --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/ebnf.xsl.svn-base @@ -0,0 +1,325 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" +                exclude-result-prefixes="doc" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This 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$ +</releaseinfo> +<author><surname>Walsh</surname> +<firstname>Norman</firstname></author> +<copyright><year>1999</year><year>2000</year><year>2001</year> +<holder>Norman Walsh</holder> +</copyright> +</referenceinfo> +<title>HTML EBNF Reference</title> + +<partintro> +<section><title>Introduction</title> + +<para>This is technical reference documentation for the DocBook XSL +Stylesheets; it documents (some of) the parameters, templates, and +other elements of the stylesheets.</para> + +<para>This reference describes the templates and parameters relevant +to formatting EBNF markup.</para> + +<para>This is not intended to be <quote>user</quote> documentation. +It is provided for developers writing customization layers for the +stylesheets, and for anyone who's interested in <quote>how it +works</quote>.</para> + +<para>Although I am trying to be thorough, this documentation is known +to be incomplete. Don't forget to read the source, too :-)</para> +</section> +</partintro> +</doc:reference> + +<!-- ==================================================================== --> + +<xsl:template match="productionset"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:choose> +    <xsl:when test="title"> +      <fo:block id="{$id}" xsl:use-attribute-sets="formal.object.properties"> +        <xsl:call-template name="formal.object.heading"> +          <xsl:with-param name="placement" select="'before'"/> +        </xsl:call-template> + +        <fo:table table-layout="fixed" width="100%"> +          <fo:table-column column-number="1" column-width="3%"/> +          <fo:table-column column-number="2" column-width="15%"/> +          <fo:table-column column-number="3" column-width="5%"/> +          <fo:table-column column-number="4" column-width="52%"/> +          <fo:table-column column-number="5" column-width="25%"/> +          <fo:table-body start-indent="0pt" end-indent="0pt"> +            <xsl:apply-templates select="production|productionrecap"/> +          </fo:table-body> +        </fo:table> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:table id="{$id}" table-layout="fixed" width="100%"> +        <fo:table-column column-number="1" column-width="3%"/> +        <fo:table-column column-number="2" column-width="15%"/> +        <fo:table-column column-number="3" column-width="5%"/> +        <fo:table-column column-number="4" column-width="52%"/> +        <fo:table-column column-number="5" column-width="25%"/> +        <fo:table-body start-indent="0pt" end-indent="0pt"> +          <xsl:apply-templates select="production|productionrecap"/> +        </fo:table-body> +      </fo:table> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="productionset/title"> +  <!-- suppressed --> +</xsl:template> + +<xsl:template match="production"> +  <xsl:param name="recap" select="false()"/> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> +  <fo:table-row> +    <fo:table-cell> +      <fo:block text-align="start"> +        <xsl:text>[</xsl:text> +        <xsl:number count="production" level="any"/> +        <xsl:text>]</xsl:text> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell> +      <fo:block text-align="end"> +        <xsl:choose> +          <xsl:when test="$recap"> +            <fo:basic-link internal-destination="{$id}" +                           xsl:use-attribute-sets="xref.properties"> +              <xsl:apply-templates select="lhs"/> +            </fo:basic-link> +          </xsl:when> +          <xsl:otherwise> +            <fo:wrapper id="{$id}"> +              <xsl:apply-templates select="lhs"/> +            </fo:wrapper> +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell> +      <fo:block text-align="center"> +        <xsl:copy-of select="$ebnf.assignment"/> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell> +      <fo:block> +        <xsl:apply-templates select="rhs"/> +        <xsl:copy-of select="$ebnf.statement.terminator"/> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell border-start-width="3pt"> +      <fo:block text-align="start"> +        <xsl:choose> +          <xsl:when test="rhs/lineannotation|constraint"> +            <xsl:apply-templates select="rhs/lineannotation" mode="rhslo"/> +            <xsl:apply-templates select="constraint"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:text> </xsl:text> +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </fo:table-cell> +  </fo:table-row> +</xsl:template> + +<xsl:template match="productionrecap"> +  <xsl:variable name="targets" select="key('id',@linkend)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:if test="count($targets)=0"> +    <xsl:message> +      <xsl:text>Error: no ID for productionrecap linkend: </xsl:text> +      <xsl:value-of select="@linkend"/> +      <xsl:text>.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="count($targets)>1"> +    <xsl:message> +      <xsl:text>Warning: multiple "IDs" for productionrecap linkend: </xsl:text> +      <xsl:value-of select="@linkend"/> +      <xsl:text>.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:apply-templates select="$target"> +    <xsl:with-param name="recap" select="true()"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="lhs"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="rhs"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="nonterminal"> +  <xsl:variable name="linkend"> +    <xsl:call-template name="xpointer.idref"> +      <xsl:with-param name="xpointer" select="@def"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="check.id.unique"> +    <xsl:with-param name="linkend" select="$linkend"/> +  </xsl:call-template> + +  <xsl:call-template name="check.idref.targets"> +    <xsl:with-param name="linkend" select="$linkend"/> +    <xsl:with-param name="element-list">production</xsl:with-param> +  </xsl:call-template> + +  <!-- If you don't provide content, you can't point outside this doc. --> +  <xsl:choose> +    <xsl:when test="*|text()"><!--nop--></xsl:when> +    <xsl:otherwise> +      <xsl:if test="$linkend = ''"> +	<xsl:message> +	  <xsl:text>Non-terminals with no content must point to </xsl:text> +	  <xsl:text>production elements in the current document.</xsl:text> +	</xsl:message> +	<xsl:message> +	  <xsl:text>Invalid xpointer for empty nt: </xsl:text> +	  <xsl:value-of select="@def"/> +	</xsl:message> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:variable name="href"> +    <xsl:choose> +      <xsl:when test="$linkend != ''"> +	<xsl:variable name="targets" select="key('id',$linkend)"/> +	<xsl:variable name="target" select="$targets[1]"/> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="@def"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:basic-link internal-destination="{$href}" +                 xsl:use-attribute-sets="xref.properties"> +    <xsl:choose> +      <xsl:when test="*|text()"> +        <xsl:apply-templates/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:choose> +          <xsl:when test="$linkend != ''"> +            <xsl:variable name="targets" select="key('id',$linkend)"/> +            <xsl:variable name="target" select="$targets[1]"/> +            <xsl:apply-templates select="$target/lhs"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:text>???</xsl:text> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> +  </fo:basic-link> +</xsl:template> + +<xsl:template match="rhs/lineannotation"> +  <!--nop--> +</xsl:template> + +<xsl:template match="rhs/lineannotation" mode="rhslo"> +  <xsl:text>/* </xsl:text> +  <xsl:apply-templates/> +  <xsl:text> */</xsl:text> +</xsl:template> + +<xsl:template match="constraint"> +  <xsl:call-template name="check.id.unique"> +    <xsl:with-param name="linkend" select="@linkend"/> +  </xsl:call-template> + +  <xsl:call-template name="check.idref.targets"> +    <xsl:with-param name="linkend" select="@linkend"/> +    <xsl:with-param name="element-list">constraintdef</xsl:with-param> +  </xsl:call-template> + +  <xsl:variable name="href"> +    <xsl:variable name="targets" select="key('id',@linkend)"/> +    <xsl:variable name="target" select="$targets[1]"/> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$target"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:if test="preceding-sibling::constraint"> +    <fo:inline linefeed-treatment="preserve">
</fo:inline> +  </xsl:if> +  <xsl:text>[ </xsl:text> + +  <xsl:choose> +    <xsl:when test="@role"> +      <xsl:value-of select="@role"/> +      <xsl:text>: </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="targets" select="key('id',@linkend)"/> +      <xsl:variable name="target" select="$targets[1]"/> +      <xsl:if test="$target/@role"> +	<xsl:value-of select="$target/@role"/> +	<xsl:text>: </xsl:text> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> + +  <fo:basic-link internal-destination="{$href}" +                 xsl:use-attribute-sets="xref.properties"> +    <xsl:variable name="targets" select="key('id',@linkend)"/> +    <xsl:variable name="target" select="$targets[1]"/> +    <xsl:apply-templates select="$target" mode="title.markup"/> +  </fo:basic-link> +  <xsl:text> ]</xsl:text> +</xsl:template> + +<xsl:template match="constraintdef"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> +  <fo:block id="{$id}"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="constraintdef/title"> +  <fo:block font-weight="bold"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fo-rtf.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fo-rtf.xsl.svn-base new file mode 100644 index 0000000..87f2818 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fo-rtf.xsl.svn-base @@ -0,0 +1,154 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:exsl="http://exslt.org/common" +                xmlns:set="http://exslt.org/sets" +                exclude-result-prefixes="exsl set" +                version="1.0"> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- This module contains templates that match against FO nodes. It is used +     to post-process result tree fragments for some sorts of cleanup. +     These templates can only ever be fired by a processor that supports +     exslt:node-set(). --> + +<!-- ==================================================================== --> + +<!-- insert.fo.fnum mode templates insert a particular RTF at the beginning +     of the first paragraph in the primary RTF. In fact, they are inserting +     a footnote-number, so we tinker a few other things too, like spacing and +     font-sizes. --> + +<xsl:template match="/" mode="insert.fo.fnum"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:apply-templates mode="insert.fo.fnum"> +    <xsl:with-param name="mark" select="$mark"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="*" mode="insert.fo.fnum"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:apply-templates mode="insert.fo.fnum"> +      <xsl:with-param name="mark" select="$mark"/> +    </xsl:apply-templates> +  </xsl:copy> +</xsl:template> + +<xsl:template match="fo:block" mode="insert.fo.fnum"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy> +    <xsl:for-each select="@*"> +      <xsl:choose> +        <xsl:when test="starts-with(name(.), 'space-before')"/> +        <xsl:when test="starts-with(name(.), 'space-after')"/> +        <xsl:when test="starts-with(name(.), 'font-size')"/> +        <xsl:otherwise> +          <xsl:copy-of select="."/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:for-each> +    <xsl:if test="not(preceding::fo:block)"> +      <xsl:copy-of select="$mark"/> +    </xsl:if> +    <xsl:apply-templates mode="insert.fo.fnum"> +      <xsl:with-param name="mark" select="$mark"/> +    </xsl:apply-templates> +  </xsl:copy> +</xsl:template> + +<xsl:template match="text()|processing-instruction()|comment()" mode="insert.fo.fnum"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy/> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- insert.fo.block mode templates insert a particular RTF at the beginning +     of the first paragraph in the primary RTF. --> + +<xsl:template match="/" mode="insert.fo.block"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:apply-templates mode="insert.fo.block"> +    <xsl:with-param name="mark" select="$mark"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="*" mode="insert.fo.block"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:apply-templates mode="insert.fo.block"> +      <xsl:with-param name="mark" select="$mark"/> +    </xsl:apply-templates> +  </xsl:copy> +</xsl:template> + +<xsl:template match="fo:block" mode="insert.fo.block"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:if test="not(preceding::fo:block)"> +      <xsl:copy-of select="$mark"/> +    </xsl:if> +    <xsl:apply-templates mode="insert.fo.block"> +      <xsl:with-param name="mark" select="$mark"/> +    </xsl:apply-templates> +  </xsl:copy> +</xsl:template> + +<xsl:template match="text()|processing-instruction()|comment()" mode="insert.fo.block"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy/> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- insert.fo.text mode templates insert a particular RTF at the beginning +     of the first text-node in the primary RTF. --> + +<xsl:template match="/" mode="insert.fo.text"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:apply-templates mode="insert.fo.text"> +    <xsl:with-param name="mark" select="$mark"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="*" mode="insert.fo.text"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:apply-templates mode="insert.fo.text"> +      <xsl:with-param name="mark" select="$mark"/> +    </xsl:apply-templates> +  </xsl:copy> +</xsl:template> + +<xsl:template match="text()|processing-instruction()|comment()" mode="insert.fo.text"> +  <xsl:param name="mark" select="'?'"/> + +  <xsl:if test="not(preceding::text())"> +    <xsl:copy-of select="$mark"/> +  </xsl:if> + +  <xsl:copy/> +</xsl:template> + +<xsl:template match="processing-instruction()|comment()" mode="insert.fo.text"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy/> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fo.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fo.xsl.svn-base new file mode 100644 index 0000000..e1441c7 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fo.xsl.svn-base @@ -0,0 +1,71 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This 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="anchor"> +  <xsl:param name="node" select="."/> +  <xsl:param name="conditional" select="1"/> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$node"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:if test="$conditional = 0 or $node/@id or $node/@xml:id"> +    <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute> +  </xsl:if> +</xsl:template> + +<xsl:template name="dingbat"> +  <xsl:param name="dingbat">bullet</xsl:param> +  <xsl:variable name="symbol"> +    <xsl:choose> +      <xsl:when test="$dingbat='bullet'">o</xsl:when> +      <xsl:when test="$dingbat='copyright'">©</xsl:when> +      <xsl:when test="$dingbat='trademark'">™</xsl:when> +      <xsl:when test="$dingbat='trade'">™</xsl:when> +      <xsl:when test="$dingbat='registered'">®</xsl:when> +      <xsl:when test="$dingbat='service'">(SM)</xsl:when> +      <xsl:when test="$dingbat='ldquo'">"</xsl:when> +      <xsl:when test="$dingbat='rdquo'">"</xsl:when> +      <xsl:when test="$dingbat='lsquo'">'</xsl:when> +      <xsl:when test="$dingbat='rsquo'">'</xsl:when> +      <xsl:when test="$dingbat='em-dash'">—</xsl:when> +      <xsl:when test="$dingbat='en-dash'">-</xsl:when> +      <xsl:otherwise>o</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$dingbat.font.family = ''"> +      <xsl:copy-of select="$symbol"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline font-family="{$dingbat.font.family}"> +        <xsl:copy-of select="$symbol"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="href.target"> +  <xsl:param name="context" select="."/> +  <xsl:param name="object" select="."/> +  <xsl:text>#</xsl:text> +  <xsl:call-template name="object.id"> +    <xsl:with-param name="object" select="$object"/> +  </xsl:call-template> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/footnote.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/footnote.xsl.svn-base new file mode 100644 index 0000000..3340b32 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/footnote.xsl.svn-base @@ -0,0 +1,186 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:exsl="http://exslt.org/common" +                exclude-result-prefixes="exsl" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:template name="format.footnote.mark"> +  <xsl:param name="mark" select="'?'"/> +  <fo:inline xsl:use-attribute-sets="footnote.mark.properties"> +    <xsl:choose> +      <xsl:when test="$fop.extensions != 0"> +        <xsl:attribute name="vertical-align">super</xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="baseline-shift">super</xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:copy-of select="$mark"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="footnote"> +  <xsl:choose> +    <xsl:when test="ancestor::table or ancestor::informaltable"> +      <xsl:call-template name="format.footnote.mark"> +        <xsl:with-param name="mark"> +          <xsl:apply-templates select="." mode="footnote.number"/> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <fo:footnote> +        <fo:inline> +          <xsl:call-template name="format.footnote.mark"> +            <xsl:with-param name="mark"> +              <xsl:apply-templates select="." mode="footnote.number"/> +            </xsl:with-param> +          </xsl:call-template> +        </fo:inline> +        <fo:footnote-body xsl:use-attribute-sets="footnote.properties"> +          <xsl:apply-templates/> +        </fo:footnote-body> +      </fo:footnote> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="footnoteref"> +  <xsl:variable name="footnote" select="key('id',@linkend)"/> +  <xsl:call-template name="format.footnote.mark"> +    <xsl:with-param name="mark"> +      <xsl:apply-templates select="$footnote" mode="footnote.number"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="footnote" mode="footnote.number"> +  <xsl:choose> +    <xsl:when test="string-length(@label) != 0"> +      <xsl:value-of select="@label"/> +    </xsl:when> +    <xsl:when test="ancestor::table or ancestor::informaltable"> +      <xsl:variable name="tfnum"> +        <xsl:number level="any" from="table|informaltable" format="1"/> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="string-length($table.footnote.number.symbols) >= $tfnum"> +          <xsl:value-of select="substring($table.footnote.number.symbols, $tfnum, 1)"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:number level="any" from="table|informaltable" +                      format="{$table.footnote.number.format}"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="fnum"> +        <!-- FIXME: list in @from is probably not complete --> +        <xsl:number level="any"  +                    from="chapter|appendix|preface|article|refentry|bibliography"  +                    count="footnote[not(@label)][not(ancestor::table) and not(ancestor::informaltable)]|ulink[$ulink.footnotes != 0][node()][@url != .][not(ancestor::footnote)][$ulink.show != 0]"  +                    format="1"/> +      </xsl:variable> +      <xsl:choose> +        <xsl:when test="string-length($footnote.number.symbols) >= $fnum"> +          <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:number value="$fnum" format="{$footnote.number.format}"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="footnote.body.number"> +  <xsl:variable name="footnote.mark"> +    <xsl:call-template name="format.footnote.mark"> +      <xsl:with-param name="mark"> +        <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="fo"> +    <xsl:apply-templates select="."/> +  </xsl:variable> + +  <xsl:variable name="fo-nodes" select="exsl:node-set($fo)"/> + +  <xsl:choose> +    <xsl:when test="$fo-nodes//fo:block"> +      <xsl:apply-templates select="$fo-nodes" mode="insert.fo.fnum"> +        <xsl:with-param name="mark" select="$footnote.mark"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="$fo-nodes" mode="insert.fo.text"> +        <xsl:with-param name="mark" select="$footnote.mark"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="footnote/para[1] +                     |footnote/simpara[1] +                     |footnote/formalpara[1]" +              priority="2"> +  <!-- this only works if the first thing in a footnote is a para, --> +  <!-- which is ok, because it usually is. --> +  <fo:block> +    <xsl:call-template name="format.footnote.mark"> +      <xsl:with-param name="mark"> +        <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/> +      </xsl:with-param> +    </xsl:call-template> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="footnote" mode="table.footnote.mode"> +  <xsl:choose> +    <xsl:when test="local-name(*[1]) = 'para' or local-name(*[1]) = 'simpara'"> +      <fo:block xsl:use-attribute-sets="table.footnote.properties"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> + +    <xsl:when test="function-available('exsl:node-set')"> +      <fo:block xsl:use-attribute-sets="table.footnote.properties"> +        <xsl:apply-templates select="*[1]" mode="footnote.body.number"/> +        <xsl:apply-templates select="*[position() > 1]"/> +      </fo:block> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:message> +        <xsl:text>Warning: footnote number may not be generated </xsl:text> +        <xsl:text>correctly; </xsl:text> +        <xsl:value-of select="local-name(*[1])"/> +        <xsl:text> unexpected as first child of footnote.</xsl:text> +      </xsl:message> +      <fo:block xsl:use-attribute-sets="table.footnote.properties"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fop.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fop.xsl.svn-base new file mode 100644 index 0000000..c3a06ba --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fop.xsl.svn-base @@ -0,0 +1,92 @@ +<?xml version='1.0' encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:fox="http://xml.apache.org/fop/extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** +     (c) Stephane Bline Peregrine Systems 2001 +     Driver file to allow pdf bookmarking (based on fop implementation). +     ******************************************************************** --> +<!-- +In PDF bookmarks can't be used characters with code>255. This version of file +translates characters with code>255 back to ASCII. + +   Pavel Zampach (zampach@volny.cz) +--> + +<xsl:variable name="a-dia" select= +"'āăąćĉċčďđēĕėęěœĝğġģĥħĩīĭįıĵķĺļľŀłńņňŋōŏőŕŗřśŝşšţťŧũūŭůűųŵŷźżžĀĂĄĆĈĊČĎĐĒĔĖĘĚŒĜĞĠĢĤĦĨĪĬĮİĴĶĹĻĽĿŁŃŅŇŊŌŎŐŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽ'"/> +<xsl:variable name="a-asc" select= +"'aaaccccddeeeeeegggghhiiiiijklllllnnnnooorrrsssstttuuuuuuwyzzzAAACCCCDDEEEEEEGGGGHHIIIIIJKLLLLLNNNNOOORRRSSSSTTTUUUUUUWYYZZZ'"/> + +<xsl:template match="*" mode="fop.outline"> +  <xsl:variable name="id"> +    <xsl:value-of select="(@id|@xml:id)[1]"/> +  </xsl:variable> +  <xsl:if test="$id != ''"> +    <fox:destination internal-destination="{$id}"/> +  </xsl:if> +  <xsl:apply-templates select="*" mode="fop.outline"/> +</xsl:template> + +<xsl:template match="set|book|part|reference|preface|chapter|appendix|article +                     |glossary|bibliography|index|setindex +                     |refentry +                     |sect1|sect2|sect3|sect4|sect5|section" +              mode="fop.outline"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="bookmark-label"> +    <xsl:apply-templates select="." mode="object.title.markup"/> +  </xsl:variable> + +  <!-- Put the root element bookmark at the same level as its children --> +  <!-- If the object is a set or book, generate a bookmark for the toc --> + +  <xsl:choose> +    <xsl:when test="parent::*"> +      <fox:outline internal-destination="{$id}"> +        <fox:label> +          <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/> +        </fox:label> +        <xsl:apply-templates select="*" mode="fop.outline"/> +      </fox:outline> +    </xsl:when> +    <xsl:otherwise> +      <fox:outline internal-destination="{$id}"> +        <fox:label> +          <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/> +        </fox:label> +      </fox:outline> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc') +                    and (book|part|reference|preface|chapter|appendix|article +                         |glossary|bibliography|index|setindex +                         |refentry +                         |sect1|sect2|sect3|sect4|sect5|section)"> +        <fox:outline internal-destination="toc...{$id}"> +          <fox:label> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'TableofContents'"/> +            </xsl:call-template> +          </fox:label> +        </fox:outline> +      </xsl:if> +      <xsl:apply-templates select="*" mode="fop.outline"/> +    </xsl:otherwise> +  </xsl:choose> +  <fox:destination internal-destination="{$id}"/> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fop1.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fop1.xsl.svn-base new file mode 100644 index 0000000..4e262e5 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/fop1.xsl.svn-base @@ -0,0 +1,71 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<xsl:template match="*" mode="fop1.outline"> +  <xsl:apply-templates select="*" mode="fop1.outline"/> +</xsl:template> + +<xsl:template match="set|book|part|reference| +                     preface|chapter|appendix|article +                     |glossary|bibliography|index|setindex +                     |refentry +                     |sect1|sect2|sect3|sect4|sect5|section" +              mode="fop1.outline"> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="bookmark-label"> +    <xsl:apply-templates select="." mode="object.title.markup"/> +  </xsl:variable> + +  <!-- Put the root element bookmark at the same level as its children --> +  <!-- If the object is a set or book, generate a bookmark for the toc --> + +  <xsl:choose> +    <xsl:when test="parent::*"> +      <fo:bookmark internal-destination="{$id}"> +        <fo:bookmark-title> +          <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/> +        </fo:bookmark-title> +        <xsl:apply-templates select="*" mode="fop1.outline"/> +      </fo:bookmark> +    </xsl:when> +    <xsl:otherwise> +      <fo:bookmark internal-destination="{$id}"> +        <fo:bookmark-title> +          <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/> +        </fo:bookmark-title> +      </fo:bookmark> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc') +                    and (book|part|reference|preface|chapter|appendix|article +                         |glossary|bibliography|index|setindex +                         |refentry +                         |sect1|sect2|sect3|sect4|sect5|section)"> +        <fo:bookmark internal-destination="toc...{$id}"> +          <fo:bookmark-title> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'TableofContents'"/> +            </xsl:call-template> +          </fo:bookmark-title> +        </fo:bookmark> +      </xsl:if> +      <xsl:apply-templates select="*" mode="fop1.outline"/> +    </xsl:otherwise> +  </xsl:choose> +<!-- +  <fo:bookmark internal-destination="{$id}"/> +--> +</xsl:template> + + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/formal.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/formal.xsl.svn-base new file mode 100644 index 0000000..0233d79 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/formal.xsl.svn-base @@ -0,0 +1,534 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- formal.object creates a basic block containing the +     result of processing the object, including its title +     and any keep-together properties. +     The template calling formal.object may wrap these results in a +     float or pgwide block. --> + +<xsl:template name="formal.object"> +  <xsl:param name="placement" select="'before'"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="content"> +    <xsl:if test="$placement = 'before'"> +      <xsl:call-template name="formal.object.heading"> +        <xsl:with-param name="placement" select="$placement"/> +      </xsl:call-template> +    </xsl:if> +    <xsl:apply-templates/> +    <xsl:if test="$placement != 'before'"> +      <xsl:call-template name="formal.object.heading"> +        <xsl:with-param name="placement" select="$placement"/> +      </xsl:call-template> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="keep.together"> +    <xsl:call-template name="pi.dbfo_keep-together"/> +  </xsl:variable> + +  <xsl:choose> +    <!-- tables have their own templates and  +         are not handled by formal.object --> +    <xsl:when test="self::figure"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="figure.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="self::example"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="example.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="self::equation"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="equation.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="self::procedure"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="procedure.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="formal.object.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="formal.object.heading"> +  <xsl:param name="object" select="."/> +  <xsl:param name="placement" select="'before'"/> + +  <fo:block xsl:use-attribute-sets="formal.title.properties"> +    <xsl:choose> +      <xsl:when test="$placement = 'before'"> +        <xsl:attribute +               name="keep-with-next.within-column">always</xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute +               name="keep-with-previous.within-column">always</xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:apply-templates select="$object" mode="object.title.markup"> +      <xsl:with-param name="allow-anchors" select="1"/> +    </xsl:apply-templates> +  </fo:block> +</xsl:template> + +<xsl:template name="informal.object"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="keep.together"> +    <xsl:call-template name="pi.dbfo_keep-together"/> +  </xsl:variable> + +  <xsl:choose> +    <!-- informaltables have their own templates and  +         are not handled by formal.object --> +    <xsl:when test="local-name(.) = 'equation'"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="equation.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="local-name(.) = 'procedure'"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="procedure.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="local-name(.) = 'informalfigure'"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="informalfigure.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="local-name(.) = 'informalexample'"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="informalexample.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="local-name(.) = 'informalequation'"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="informalequation.properties"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}"  +                xsl:use-attribute-sets="informal.object.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="semiformal.object"> +  <xsl:param name="placement" select="'before'"/> +  <xsl:choose> +    <xsl:when test="./title"> +      <xsl:call-template name="formal.object"> +        <xsl:with-param name="placement" select="$placement"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="informal.object"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="figure"> +  <xsl:variable name="param.placement" +              select="substring-after(normalize-space($formal.title.placement), +                                      concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="figure"> +    <xsl:choose> +      <xsl:when test="@pgwide = '1'"> +        <fo:block xsl:use-attribute-sets="pgwide.properties"> +          <xsl:call-template name="formal.object"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="formal.object"> +          <xsl:with-param name="placement" select="$placement"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="floatstyle"> +    <xsl:call-template name="floatstyle"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$floatstyle != ''"> +      <xsl:call-template name="floater"> +        <xsl:with-param name="position" select="$floatstyle"/> +        <xsl:with-param name="content" select="$figure"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$figure"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="example"> +  <xsl:variable name="param.placement" +             select="substring-after(normalize-space($formal.title.placement), +                                     concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Example doesn't have a pgwide attribute, so may use a PI --> +  <xsl:variable name="pgwide.pi"> +    <xsl:call-template name="pi.dbfo_pgwide"/> +  </xsl:variable> + +  <xsl:variable name="pgwide"> +    <xsl:choose> +      <xsl:when test="$pgwide.pi"> +        <xsl:value-of select="$pgwide.pi"/> +      </xsl:when> +      <!-- child element may set pgwide --> +      <xsl:when test="*[@pgwide]"> +        <xsl:value-of select="*[@pgwide][1]/@pgwide"/> +      </xsl:when> +    </xsl:choose> +  </xsl:variable> + +  <!-- Get align value from internal mediaobject --> +  <xsl:variable name="align"> +    <xsl:if test="mediaobject|mediaobjectco"> +      <xsl:variable name="olist" select="mediaobject/imageobject +                     |mediaobjectco/imageobjectco +                     |mediaobject/videoobject +                     |mediaobject/audioobject +                     |mediaobject/textobject"/> + +      <xsl:variable name="object.index"> +        <xsl:call-template name="select.mediaobject.index"> +          <xsl:with-param name="olist" select="$olist"/> +          <xsl:with-param name="count" select="1"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="object" select="$olist[position() = $object.index]"/> + +      <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="example"> +    <xsl:choose> +      <xsl:when test="$pgwide = '1'"> +        <fo:block xsl:use-attribute-sets="pgwide.properties"> +          <xsl:if test="$align != ''"> +            <xsl:attribute name="text-align"> +              <xsl:value-of select="$align"/> +            </xsl:attribute> +          </xsl:if> +          <xsl:call-template name="formal.object"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <fo:block> +          <xsl:if test="$align != ''"> +            <xsl:attribute name="text-align"> +              <xsl:value-of select="$align"/> +            </xsl:attribute> +          </xsl:if> +          <xsl:call-template name="formal.object"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </fo:block> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="floatstyle"> +    <xsl:call-template name="floatstyle"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$floatstyle != ''"> +      <xsl:call-template name="floater"> +        <xsl:with-param name="position" select="$floatstyle"/> +        <xsl:with-param name="content" select="$example"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$example"/> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<!-- Unified handling of CALS and HTML tables, formal and not --> +<!-- Creates a hierarchy of nested containers: +     - Outer container does a float. +     - Nested container does block-container for rotation +     - Nested block contains title, layout table and footnotes +     - Nested layout table placeholder template supports extensions. +     - fo:table is innermost. +     Created from the innermost and working out. +     Not all layers apply to every table. +--> +<xsl:template match="table|informaltable"> +  <xsl:if test="tgroup/tbody/tr +                |tgroup/thead/tr +                |tgroup/tfoot/tr"> +    <xsl:message terminate="yes"> +      <xsl:text>Broken table: tr descendent of CALS Table.</xsl:text> +      <xsl:text>The text in the first tr is:
</xsl:text> +      <xsl:value-of  +               select="(tgroup//tr)[1]"/> +    </xsl:message> +  </xsl:if> +  <xsl:if test="not(tgroup) and .//row"> +    <xsl:message terminate="yes"> +      <xsl:text>Broken table: row descendent of HTML table.</xsl:text> +      <xsl:text>The text in the first row is:
</xsl:text> +      <xsl:value-of  +               select=".//row[1]"/> +    </xsl:message> +  </xsl:if> + +  <!-- Contains fo:table, not title or footnotes --> +  <xsl:variable name="table.content"> +    <xsl:call-template name="make.table.content"/> +  </xsl:variable> + +  <!-- Optional layout table template for extensions --> +  <xsl:variable name="table.layout"> +    <xsl:call-template name="table.layout"> +      <xsl:with-param name="table.content" select="$table.content"/> +    </xsl:call-template> +  </xsl:variable> + +  <!-- fo:block contains title, layout table, and footnotes  --> +  <xsl:variable name="table.block"> +    <xsl:call-template name="table.block"> +      <xsl:with-param name="table.layout" select="$table.layout"/> +    </xsl:call-template> +  </xsl:variable> + +  <!-- pgwide or orient container --> +  <xsl:variable name="table.container"> +    <xsl:call-template name="table.container"> +      <xsl:with-param name="table.block" select="$table.block"/> +    </xsl:call-template> +  </xsl:variable> + +  <!-- float or not --> +  <xsl:variable name="floatstyle"> +    <xsl:call-template name="floatstyle"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$floatstyle != ''"> +      <xsl:call-template name="floater"> +        <xsl:with-param name="position" select="$floatstyle"/> +        <xsl:with-param name="content" select="$table.container"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$table.container"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + + +<xsl:template match="equation"> +  <xsl:variable name="param.placement" +              select="substring-after(normalize-space($formal.title.placement), +                                      concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Equation doesn't have a pgwide attribute, so may use a PI --> +  <xsl:variable name="pgwide"> +    <xsl:call-template name="pi.dbfo_pgwide"/> +  </xsl:variable> + +  <xsl:variable name="equation"> +    <xsl:choose> +      <xsl:when test="$pgwide = '1'"> +        <fo:block xsl:use-attribute-sets="pgwide.properties"> +          <xsl:call-template name="semiformal.object"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="semiformal.object"> +          <xsl:with-param name="placement" select="$placement"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="floatstyle"> +    <xsl:call-template name="floatstyle"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$floatstyle != ''"> +      <xsl:call-template name="floater"> +        <xsl:with-param name="position" select="$floatstyle"/> +        <xsl:with-param name="content" select="$equation"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$equation"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="figure/title"></xsl:template> +<xsl:template match="figure/titleabbrev"></xsl:template> +<xsl:template match="table/title"></xsl:template> +<xsl:template match="table/titleabbrev"></xsl:template> +<xsl:template match="table/textobject"></xsl:template> +<xsl:template match="example/title"></xsl:template> +<xsl:template match="example/titleabbrev"></xsl:template> +<xsl:template match="equation/title"></xsl:template> +<xsl:template match="equation/titleabbrev"></xsl:template> + +<xsl:template match="informalfigure"> +  <xsl:call-template name="informal.object"/> +</xsl:template> + +<xsl:template match="informalexample"> +  <xsl:call-template name="informal.object"/> +</xsl:template> + +<xsl:template match="informaltable/textobject"></xsl:template> + +<xsl:template match="informalequation"> +  <xsl:call-template name="informal.object"/> +</xsl:template> + +<xsl:template name="floatstyle"> +  <xsl:if test="(@float and @float != '0') or @floatstyle != ''"> +    <xsl:choose> +      <xsl:when test="@floatstyle != ''"> +        <xsl:value-of select="@floatstyle"/> +      </xsl:when> +      <xsl:when test="@float = '1'"> +        <xsl:value-of select="$default.float.class"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="@float"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/glossary.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/glossary.xsl.svn-base new file mode 100644 index 0000000..718bdb6 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/glossary.xsl.svn-base @@ -0,0 +1,1139 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY % common.entities SYSTEM "../common/entities.ent"> +%common.entities; +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="glossary"> +  <xsl:call-template name="make-glossary"/> +</xsl:template> + +<xsl:template match="glossdiv/title"/> +<xsl:template match="glossdiv/subtitle"/> +<xsl:template match="glossdiv/titleabbrev"/> + +<!-- ==================================================================== --> + +<xsl:template name="make-glossary"> +  <xsl:param name="divs" select="glossdiv"/> +  <xsl:param name="entries" select="glossentry"/> +  <xsl:param name="preamble" select="*[not(self::title +                                           or self::subtitle +                                           or self::glossdiv +                                           or self::glossentry)]"/> + +  &setup-language-variable; + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_glossary-presentation"/> +  </xsl:variable> + +  <xsl:variable name="term-width"> +    <xsl:call-template name="pi.dbfo_glossterm-width"/> +  </xsl:variable> + +  <xsl:variable name="width"> +    <xsl:choose> +      <xsl:when test="$term-width = ''"> +        <xsl:value-of select="$glossterm.width"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$term-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="glossary.titlepage"/> +  </fo:block> + +  <xsl:if test="$preamble"> +    <xsl:apply-templates select="$preamble"/> +  </xsl:if> + +  <xsl:choose> +    <xsl:when test="$presentation = 'list'"> +      <xsl:apply-templates select="$divs" mode="glossary.as.list"> +        <xsl:with-param name="width" select="$width"/> +      </xsl:apply-templates> +      <xsl:if test="$entries"> +        <fo:list-block provisional-distance-between-starts="{$width}" +                       provisional-label-separation="{$glossterm.separation}" +                       xsl:use-attribute-sets="normal.para.spacing"> +          <xsl:choose> +            <xsl:when test="$glossary.sort != 0"> +              <xsl:apply-templates select="$entries" mode="glossary.as.list"> +                <xsl:sort lang="{$language}" +                          select="translate(glossterm, $lowercase,  +                                            $uppercase)"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="$entries" mode="glossary.as.list"/> +            </xsl:otherwise> +          </xsl:choose> +        </fo:list-block> +      </xsl:if> +    </xsl:when> +    <xsl:when test="$presentation = 'blocks'"> +      <xsl:apply-templates select="$divs" mode="glossary.as.blocks"/> +      <xsl:choose> +        <xsl:when test="$glossary.sort != 0"> +          <xsl:apply-templates select="$entries" mode="glossary.as.blocks"> +            <xsl:sort lang="{$language}" +                      select="translate(glossterm, $lowercase,  +                                        $uppercase)"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="$glossary.as.blocks != 0"> +      <xsl:apply-templates select="$divs" mode="glossary.as.blocks"/> +      <xsl:choose> +        <xsl:when test="$glossary.sort != 0"> +          <xsl:apply-templates select="$entries" mode="glossary.as.blocks"> +            <xsl:sort lang="{$language}" +                      select="translate(glossterm, $lowercase,  +                                        $uppercase)"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="$divs" mode="glossary.as.list"> +        <xsl:with-param name="width" select="$width"/> +      </xsl:apply-templates> +      <xsl:if test="$entries"> +        <fo:list-block provisional-distance-between-starts="{$width}" +                       provisional-label-separation="{$glossterm.separation}" +                       xsl:use-attribute-sets="normal.para.spacing"> +          <xsl:choose> +            <xsl:when test="$glossary.sort != 0"> +              <xsl:apply-templates select="$entries" mode="glossary.as.list"> +                <xsl:sort lang="{$language}" +                          select="translate(glossterm, $lowercase,  +                                            $uppercase)"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="$entries" mode="glossary.as.list"/> +            </xsl:otherwise> +          </xsl:choose> +        </fo:list-block> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="book/glossary|part/glossary|/glossary" priority="2"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> + +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +     +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <xsl:call-template name="make-glossary"/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="glossary/glossaryinfo"></xsl:template> +<xsl:template match="glossary/info"></xsl:template> +<xsl:template match="glossary/title"></xsl:template> +<xsl:template match="glossary/subtitle"></xsl:template> +<xsl:template match="glossary/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="glosslist"> +  &setup-language-variable; + +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_glosslist-presentation"/> +  </xsl:variable> + +  <xsl:variable name="term-width"> +    <xsl:call-template name="pi.dbfo_glossterm-width"/> +  </xsl:variable> + +  <xsl:variable name="width"> +    <xsl:choose> +      <xsl:when test="$term-width = ''"> +        <xsl:value-of select="$glossterm.width"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$term-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title or info/title"> +    <xsl:apply-templates select="(title|info/title)[1]" mode="list.title.mode"/> +  </xsl:if> + +  <xsl:choose> +    <xsl:when test="$presentation = 'list'"> +      <fo:list-block provisional-distance-between-starts="{$width}" +                     provisional-label-separation="{$glossterm.separation}" +                     xsl:use-attribute-sets="normal.para.spacing"> +        <xsl:choose> +          <xsl:when test="$glossary.sort != 0"> +            <xsl:apply-templates select="glossentry" mode="glossary.as.list"> +              <xsl:sort lang="{$language}" +                        select="translate(glossterm, $lowercase,  +                                          $uppercase)"/> +            </xsl:apply-templates> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="glossentry" mode="glossary.as.list"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:list-block> +    </xsl:when> +    <xsl:when test="$presentation = 'blocks'"> +      <xsl:choose> +        <xsl:when test="$glossary.sort != 0"> +          <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"> +            <xsl:sort lang="{$language}" +                      select="translate(glossterm, $lowercase,  +                                        $uppercase)"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="$glosslist.as.blocks != 0"> +      <xsl:choose> +        <xsl:when test="$glossary.sort != 0"> +          <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"> +            <xsl:sort lang="{$language}" +                      select="translate(glossterm, $lowercase,  +                                        $uppercase)"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block provisional-distance-between-starts="{$width}" +                     provisional-label-separation="{$glossterm.separation}" +                     xsl:use-attribute-sets="normal.para.spacing"> +        <xsl:choose> +          <xsl:when test="$glossary.sort != 0"> +            <xsl:apply-templates select="glossentry" mode="glossary.as.list"> +              <xsl:sort lang="{$language}" +                        select="translate(glossterm, $lowercase,  +                                          $uppercase)"/> +            </xsl:apply-templates> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="glossentry" mode="glossary.as.list"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Glossary collection --> + +<xsl:template match="glossary[@role='auto']" priority="2"> +  <xsl:variable name="collection" select="document($glossary.collection, .)"/> +  <xsl:if test="$glossary.collection = ''"> +    <xsl:message> +      <xsl:text>Warning: processing automatic glossary </xsl:text> +      <xsl:text>without a glossary.collection file.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="not($collection) and $glossary.collection != ''"> +    <xsl:message> +      <xsl:text>Warning: processing automatic glossary but unable to </xsl:text> +      <xsl:text>open glossary.collection file '</xsl:text> +      <xsl:value-of select="$glossary.collection"/> +      <xsl:text>'</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:call-template name="make-auto-glossary"/> +</xsl:template> + +<xsl:template name="make-auto-glossary"> +  <xsl:param name="collection" select="document($glossary.collection, .)"/> +  <xsl:param name="terms" select="//glossterm[not(parent::glossdef)]|//firstterm"/> +  <xsl:param name="preamble" select="*[not(self::title +                                           or self::subtitle +                                           or self::glossdiv +                                           or self::glossentry)]"/> + +  &setup-language-variable; + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_glossary-presentation"/> +  </xsl:variable> + +  <xsl:variable name="term-width"> +    <xsl:call-template name="pi.dbfo_glossterm-width"/> +  </xsl:variable> + +  <xsl:variable name="width"> +    <xsl:choose> +      <xsl:when test="$term-width = ''"> +        <xsl:value-of select="$glossterm.width"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$term-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="$glossary.collection = ''"> +    <xsl:message> +      <xsl:text>Warning: processing automatic glossary </xsl:text> +      <xsl:text>without a glossary.collection file.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <fo:block id="{$id}"> +    <xsl:call-template name="glossary.titlepage"/> +  </fo:block> + +  <xsl:if test="$preamble"> +    <xsl:apply-templates select="$preamble"/> +  </xsl:if> + +  <xsl:choose> +    <xsl:when test="glossdiv and $collection//glossdiv"> +      <xsl:for-each select="$collection//glossdiv"> +        <!-- first see if there are any in this div --> +        <xsl:variable name="exist.test"> +          <xsl:for-each select="glossentry"> +            <xsl:variable name="cterm" select="glossterm"/> +            <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +              <xsl:value-of select="glossterm"/> +            </xsl:if> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:if test="$exist.test != ''"> +          <xsl:choose> +            <xsl:when test="$presentation = 'list'"> +              <xsl:apply-templates select="." mode="auto-glossary-as-list"> +                <xsl:with-param name="width" select="$width"/> +                <xsl:with-param name="terms" select="$terms"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:when test="$presentation = 'blocks'"> +              <xsl:apply-templates select="." mode="auto-glossary-as-blocks"> +                <xsl:with-param name="terms" select="$terms"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:when test="$glossary.as.blocks != 0"> +              <xsl:apply-templates select="." mode="auto-glossary-as-blocks"> +                <xsl:with-param name="terms" select="$terms"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="." mode="auto-glossary-as-list"> +                <xsl:with-param name="width" select="$width"/> +                <xsl:with-param name="terms" select="$terms"/> +              </xsl:apply-templates> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:if> +      </xsl:for-each> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$presentation = 'list'"> +          <fo:list-block provisional-distance-between-starts="{$width}" +                         provisional-label-separation="{$glossterm.separation}" +                         xsl:use-attribute-sets="normal.para.spacing"> +            <xsl:choose> +              <xsl:when test="$glossary.sort != 0"> +                <xsl:for-each select="$collection//glossentry"> +                  <xsl:sort lang="{$language}" +                            select="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-as-list"/> +                  </xsl:if> +                </xsl:for-each> +              </xsl:when> +              <xsl:otherwise> +                <xsl:for-each select="$collection//glossentry"> +                  <xsl:variable name="cterm" select="glossterm"/> +                  <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +                    <xsl:apply-templates select="."  +                                         mode="auto-glossary-as-list"/> +                  </xsl:if> +                </xsl:for-each> +              </xsl:otherwise> +            </xsl:choose> +          </fo:list-block> +        </xsl:when> +        <xsl:when test="$presentation = 'blocks' or +                        $glossary.as.blocks != 0"> +          <xsl:choose> +            <xsl:when test="$glossary.sort != 0"> +              <xsl:for-each select="$collection//glossentry"> +                <xsl:sort lang="{$language}" +                          select="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-as-blocks"/> +                </xsl:if> +              </xsl:for-each> +            </xsl:when> +            <xsl:otherwise> +              <xsl:for-each select="$collection//glossentry"> +                <xsl:variable name="cterm" select="glossterm"/> +                <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +                  <xsl:apply-templates select="."  +                                       mode="auto-glossary-as-blocks"/> +                </xsl:if> +              </xsl:for-each> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +          <fo:list-block provisional-distance-between-starts="{$width}" +                         provisional-label-separation="{$glossterm.separation}" +                         xsl:use-attribute-sets="normal.para.spacing"> +            <xsl:choose> +              <xsl:when test="$glossary.sort != 0"> +                <xsl:for-each select="$collection//glossentry"> +                  <xsl:sort lang="{$language}" +                            select="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-as-list"/> +                  </xsl:if> +                </xsl:for-each> +              </xsl:when> +              <xsl:otherwise> +                <xsl:for-each select="$collection//glossentry"> +                  <xsl:variable name="cterm" select="glossterm"/> +                  <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +                    <xsl:apply-templates select="."  +                                         mode="auto-glossary-as-list"/> +                  </xsl:if> +                </xsl:for-each> +              </xsl:otherwise> +            </xsl:choose> +          </fo:list-block> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="book/glossary[@role='auto']| +                     part/glossary[@role='auto']| +                     /glossary[@role='auto']" priority="2.5"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <xsl:if test="$glossary.collection = ''"> +    <xsl:message> +      <xsl:text>Warning: processing automatic glossary </xsl:text> +      <xsl:text>without a glossary.collection file.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <xsl:call-template name="make-auto-glossary"/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="glossdiv" mode="auto-glossary-as-list"> +  <xsl:param name="width" select="$glossterm.width"/> +  <xsl:param name="terms" select="."/> + +  &setup-language-variable; + +  <xsl:variable name="preamble" +                select="*[not(self::title +                            or self::subtitle +                            or self::glossentry)]"/> + +  <xsl:call-template name="glossdiv.titlepage"/> + +  <xsl:apply-templates select="$preamble"/> + +  <fo:list-block provisional-distance-between-starts="{$width}" +                 provisional-label-separation="{$glossterm.separation}" +                 xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:choose> +      <xsl:when test="$glossary.sort != 0"> +        <xsl:for-each select="glossentry"> +          <xsl:sort lang="{$language}" +                    select="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-as-list"/> +          </xsl:if> +        </xsl:for-each> +      </xsl:when> +      <xsl:otherwise> +        <xsl:for-each select="glossentry"> +          <xsl:variable name="cterm" select="glossterm"/> +          <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +            <xsl:apply-templates select="." mode="auto-glossary-as-list"/> +          </xsl:if> +        </xsl:for-each> +      </xsl:otherwise> +    </xsl:choose> +  </fo:list-block> +</xsl:template> + +<xsl:template match="glossentry" mode="auto-glossary-as-list"> +  <xsl:apply-templates select="." mode="glossary.as.list"/> +</xsl:template> + +<xsl:template match="glossdiv" mode="auto-glossary-as-blocks"> +  <xsl:param name="terms" select="."/> + +  &setup-language-variable; + +  <xsl:variable name="preamble" +                select="*[not(self::title +                            or self::subtitle +                            or self::glossentry)]"/> + +  <xsl:call-template name="glossdiv.titlepage"/> + +  <xsl:apply-templates select="$preamble"/> + +  <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-as-blocks"/> +        </xsl:if> +      </xsl:for-each> +    </xsl:when> +    <xsl:otherwise> +      <xsl:for-each select="glossentry"> +        <xsl:variable name="cterm" select="glossterm"/> +        <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +          <xsl:apply-templates select="." mode="auto-glossary-as-blocks"/> +        </xsl:if> +      </xsl:for-each> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<xsl:template match="glossentry" mode="auto-glossary-as-blocks"> +  <xsl:apply-templates select="." mode="glossary.as.blocks"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Format glossary as a list --> + +<xsl:template match="glossdiv" mode="glossary.as.list"> +  <xsl:param name="width" select="$glossterm.width"/> + +  &setup-language-variable; + +  <xsl:variable name="entries" select="glossentry"/> + +  <xsl:variable name="preamble" +                select="*[not(self::title +                            or self::subtitle +                            or self::glossentry)]"/> + +  <xsl:call-template name="glossdiv.titlepage"/> + +  <xsl:apply-templates select="$preamble"/> + +  <fo:list-block provisional-distance-between-starts="{$width}" +                 provisional-label-separation="{$glossterm.separation}" +                 xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:choose> +      <xsl:when test="$glossary.sort != 0"> +        <xsl:apply-templates select="$entries" mode="glossary.as.list"> +          <xsl:sort lang="{$language}" +                    select="translate(glossterm, $lowercase,  +                                      $uppercase)"/> +        </xsl:apply-templates> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates select="$entries" mode="glossary.as.list"/> +      </xsl:otherwise> +    </xsl:choose> +  </fo:list-block> +</xsl:template> + +<!-- +GlossEntry ::= +  GlossTerm, Acronym?, Abbrev?, +  (IndexTerm)*, +  RevHistory?, +  (GlossSee | GlossDef+) +--> + +<xsl:template match="glossentry" mode="glossary.as.list"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:list-item xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:call-template name="anchor"> +      <xsl:with-param name="conditional"> +        <xsl:choose> +          <xsl:when test="$glossterm.auto.link != 0 +                          or $glossary.collection != ''">0</xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> + +    <fo:list-item-label end-indent="label-end()"> +      <fo:block> +        <xsl:choose> +          <xsl:when test="$glossentry.show.acronym = 'primary'"> +            <xsl:choose> +              <xsl:when test="acronym|abbrev"> +                <xsl:apply-templates select="acronym|abbrev"  +                                     mode="glossary.as.list"/> +                <xsl:text> (</xsl:text> +                <xsl:apply-templates select="glossterm"  +                                     mode="glossary.as.list"/> +                <xsl:text>)</xsl:text> +              </xsl:when> +              <xsl:otherwise> +                <xsl:apply-templates select="glossterm"  +                                     mode="glossary.as.list"/> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:when> + +          <xsl:when test="$glossentry.show.acronym = 'yes'"> +            <xsl:apply-templates select="glossterm" mode="glossary.as.list"/> + +            <xsl:if test="acronym|abbrev"> +              <xsl:text> (</xsl:text> +              <xsl:apply-templates select="acronym|abbrev"  +                                   mode="glossary.as.list"/> +              <xsl:text>)</xsl:text> +            </xsl:if> +          </xsl:when> + +          <xsl:otherwise> +            <xsl:apply-templates select="glossterm" mode="glossary.as.list"/> +          </xsl:otherwise> +        </xsl:choose> +        <xsl:apply-templates select="indexterm"/> +      </fo:block> +    </fo:list-item-label> + +    <fo:list-item-body start-indent="body-start()"> +      <xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.list"/> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="glossentry/glossterm" mode="glossary.as.list"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:inline id="{$id}"> +    <xsl:apply-templates/> +  </fo:inline> +  <xsl:if test="following-sibling::glossterm">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/acronym" mode="glossary.as.list"> +  <xsl:apply-templates/> +  <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/abbrev" mode="glossary.as.list"> +  <xsl:apply-templates/> +  <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/revhistory" mode="glossary.as.list"> +</xsl:template> + +<xsl:template match="glossentry/glosssee" mode="glossary.as.list"> +  <xsl:variable name="otherterm" select="@otherterm"/> +  <xsl:variable name="targets" select="key('id', $otherterm)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <fo:block> +    <xsl:variable name="template"> +      <xsl:call-template name="gentext.template"> +        <xsl:with-param name="context" select="'glossary'"/> +        <xsl:with-param name="name" select="'see'"/> +      </xsl:call-template> +    </xsl:variable> +    <xsl:variable name="title"> +      <xsl:choose> +        <xsl:when test="$target"> +          <fo:basic-link internal-destination="{$otherterm}" +                         xsl:use-attribute-sets="xref.properties"> +            <xsl:apply-templates select="$target" mode="xref-to"/> +          </fo:basic-link> +        </xsl:when> +        <xsl:when test="$otherterm != '' and not($target)"> +          <xsl:message> +            <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text> +            <xsl:value-of select="$otherterm"/> +          </xsl:message> +          <xsl:apply-templates mode="glossary.as.list"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="glossary.as.list"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:call-template name="substitute-markup"> +      <xsl:with-param name="template" select="$template"/> +      <xsl:with-param name="title" select="$title"/> +    </xsl:call-template> + +    <xsl:text>.</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="glossentry/glossdef" mode="glossary.as.list"> +  <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/> +  <xsl:if test="glossseealso"> +    <fo:block> +      <xsl:variable name="template"> +        <xsl:call-template name="gentext.template"> +          <xsl:with-param name="context" select="'glossary'"/> +          <xsl:with-param name="name" select="'seealso'"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:variable name="title"> +        <xsl:apply-templates select="glossseealso" mode="glossary.as.list"/> +      </xsl:variable> +      <xsl:call-template name="substitute-markup"> +        <xsl:with-param name="template" select="$template"/> +        <xsl:with-param name="title" select="$title"/> +      </xsl:call-template> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]" +              mode="glossary.as.list"> +  <fo:block> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="glossseealso" mode="glossary.as.list"> +  <xsl:variable name="otherterm" select="@otherterm"/> +  <xsl:variable name="targets" select="key('id', $otherterm)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:choose> +    <xsl:when test="$target"> +      <fo:basic-link internal-destination="{$otherterm}" +                     xsl:use-attribute-sets="xref.properties"> +        <xsl:apply-templates select="$target" mode="xref-to"/> +      </fo:basic-link> +    </xsl:when> +    <xsl:when test="$otherterm != '' and not($target)"> +      <xsl:message> +        <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text> +        <xsl:value-of select="$otherterm"/> +      </xsl:message> +      <xsl:apply-templates mode="glossary.as.list"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="glossary.as.list"/> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="position() = last()"> +      <xsl:text>.</xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>, </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Format glossary blocks --> + +<xsl:template match="glossdiv" mode="glossary.as.blocks"> +  &setup-language-variable; +  <xsl:variable name="entries" select="glossentry"/> +  <xsl:variable name="preamble" +                select="*[not(self::title +                            or self::subtitle +                            or self::glossentry)]"/> + +  <xsl:call-template name="glossdiv.titlepage"/> + +  <xsl:apply-templates select="$preamble"/> + +  <xsl:choose> +    <xsl:when test="$glossary.sort != 0"> +      <xsl:apply-templates select="$entries" mode="glossary.as.blocks"> +        <xsl:sort lang="{$language}" +                  select="translate(glossterm, $lowercase,  +                                    $uppercase)"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- +GlossEntry ::= +  GlossTerm, Acronym?, Abbrev?, +  (IndexTerm)*, +  RevHistory?, +  (GlossSee | GlossDef+) +--> + +<xsl:template match="glossentry" mode="glossary.as.blocks"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block xsl:use-attribute-sets="list.item.spacing" +           keep-with-next.within-column="always"  +           keep-together.within-column="always"> +    <xsl:call-template name="anchor"> +      <xsl:with-param name="conditional"> +        <xsl:choose> +          <xsl:when test="$glossterm.auto.link != 0 +                          or $glossary.collection != ''">0</xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> + +    <xsl:choose> +      <xsl:when test="$glossentry.show.acronym = 'primary'"> +        <xsl:choose> +          <xsl:when test="acronym|abbrev"> +            <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/> +            <xsl:text> (</xsl:text> +            <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/> +            <xsl:text>)</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:when> + +      <xsl:when test="$glossentry.show.acronym = 'yes'"> +        <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/> + +        <xsl:if test="acronym|abbrev"> +          <xsl:text> (</xsl:text> +          <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/> +          <xsl:text>)</xsl:text> +        </xsl:if> +      </xsl:when> + +      <xsl:otherwise> +        <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:apply-templates select="indexterm"/> +  </fo:block> + +  <fo:block margin-left="0.25in"> +    <xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.blocks"/> +  </fo:block> +</xsl:template> + +<xsl:template match="glossentry/glossterm" mode="glossary.as.blocks"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:inline id="{$id}"> +    <xsl:apply-templates/> +  </fo:inline> +  <xsl:if test="following-sibling::glossterm">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/acronym" mode="glossary.as.blocks"> +  <xsl:apply-templates/> +  <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/abbrev" mode="glossary.as.blocks"> +  <xsl:apply-templates/> +  <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/glosssee" mode="glossary.as.blocks"> +  <xsl:variable name="otherterm" select="@otherterm"/> +  <xsl:variable name="targets" select="key('id', $otherterm)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:variable name="template"> +    <xsl:call-template name="gentext.template"> +      <xsl:with-param name="context" select="'glossary'"/> +      <xsl:with-param name="name" select="'see'"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:variable name="title"> +    <xsl:choose> +      <xsl:when test="$target"> +        <fo:basic-link internal-destination="{$otherterm}" +                       xsl:use-attribute-sets="xref.properties"> +          <xsl:apply-templates select="$target" mode="xref-to"/> +        </fo:basic-link> +      </xsl:when> +      <xsl:when test="$otherterm != '' and not($target)"> +        <xsl:message> +          <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text> +          <xsl:value-of select="$otherterm"/> +        </xsl:message> +        <xsl:apply-templates mode="glossary.as.blocks"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates mode="glossary.as.blocks"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:call-template name="substitute-markup"> +    <xsl:with-param name="template" select="$template"/> +    <xsl:with-param name="title" select="$title"/> +  </xsl:call-template> + +  <xsl:text>.</xsl:text> +</xsl:template> + +<xsl:template match="glossentry/glossdef" mode="glossary.as.blocks"> +  <xsl:apply-templates select="*[local-name(.) != 'glossseealso']" +                       mode="glossary.as.blocks"/> +  <xsl:if test="glossseealso"> +    <fo:block> +      <xsl:variable name="template"> +        <xsl:call-template name="gentext.template"> +          <xsl:with-param name="context" select="'glossary'"/> +          <xsl:with-param name="name" select="'seealso'"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:variable name="title"> +        <xsl:apply-templates select="glossseealso" mode="glossary.as.blocks"/> +      </xsl:variable> +      <xsl:call-template name="substitute-markup"> +        <xsl:with-param name="template" select="$template"/> +        <xsl:with-param name="title" select="$title"/> +      </xsl:call-template> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]" +              mode="glossary.as.blocks"> +  <fo:block> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- Handle any other glossdef content normally --> +<xsl:template match="*" mode="glossary.as.blocks"> +  <xsl:apply-templates select="." /> +</xsl:template> + +<xsl:template match="glossseealso" mode="glossary.as.blocks"> +  <xsl:variable name="otherterm" select="@otherterm"/> +  <xsl:variable name="targets" select="key('id', $otherterm)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:choose> +    <xsl:when test="$target"> +      <fo:basic-link internal-destination="{$otherterm}" +                     xsl:use-attribute-sets="xref.properties"> +        <xsl:apply-templates select="$target" mode="xref-to"/> +      </fo:basic-link> +    </xsl:when> +    <xsl:when test="$otherterm != '' and not($target)"> +      <xsl:message> +        <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text> +        <xsl:value-of select="$otherterm"/> +      </xsl:message> +      <xsl:apply-templates mode="glossary.as.blocks"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="glossary.as.blocks"/> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="position() = last()"> +      <xsl:text>.</xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>, </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/graphics.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/graphics.xsl.svn-base new file mode 100644 index 0000000..c297376 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/graphics.xsl.svn-base @@ -0,0 +1,637 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY lowercase "'abcdefghijklmnopqrstuvwxyz'"> +<!ENTITY uppercase "'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"> + ]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:xlink="http://www.w3.org/1999/xlink" +                xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory" +                xmlns:xtext="com.nwalsh.xalan.Text" +                xmlns:lxslt="http://xml.apache.org/xslt" +                exclude-result-prefixes="xlink stext xtext lxslt" +                extension-element-prefixes="stext xtext" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     Contributors: +     Colin Paul Adams, <colin@colina.demon.co.uk> +     Paul Grosso, <pgrosso@arbortext.com> + +     ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- Graphic format tests for the FO backend --> + +<xsl:param name="graphic.notations"> +  <!-- n.b. exactly one leading space, one trailing space, and one inter-word space --> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0"> +      <xsl:text> PNG PDF JPG JPEG linespecific </xsl:text> +    </xsl:when> +    <xsl:when test="$fop1.extensions != 0"> +      <xsl:text> BMP GIF TIFF SVG PNG EPS JPG JPEG linespecific </xsl:text> +    </xsl:when> +    <xsl:when test="$fop.extensions != 0"> +      <xsl:text> BMP GIF TIFF SVG PNG EPS JPG JPEG linespecific </xsl:text> +    </xsl:when> +    <xsl:when test="$arbortext.extensions != 0"> +      <xsl:text> PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP </xsl:text> +    </xsl:when> +    <xsl:when test="$xep.extensions != 0"> +      <xsl:text> SVG PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text> PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:template name="is.graphic.format"> +  <xsl:param name="format"/> +  <xsl:if test="contains($graphic.notations, concat(' ',$format,' '))">1</xsl:if> +</xsl:template> + +<xsl:param name="graphic.extensions"> +  <!-- n.b. exactly one leading space, one trailing space, and one inter-word space --> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0"> +      <xsl:text> png pdf jpg jpeg </xsl:text> +    </xsl:when> +    <xsl:when test="$fop1.extensions != 0"> +      <xsl:text> bmp gif tif tiff svg png pdf jpg jpeg eps </xsl:text> +    </xsl:when> +    <xsl:when test="$fop.extensions != 0"> +      <xsl:text> bmp gif tif tiff svg png pdf jpg jpeg eps </xsl:text> +    </xsl:when> +    <xsl:when test="$arbortext.extensions != 0"> +      <xsl:text> png pdf jpg jpeg gif tif tiff bmp </xsl:text> +    </xsl:when> +    <xsl:when test="$xep.extensions != 0"> +      <xsl:text> svg png pdf jpg jpeg gif tif tiff bmp eps </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text> svg png pdf jpg jpeg gif tif tiff bmp eps </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:template name="is.graphic.extension"> +  <xsl:param name="ext"/> +  <xsl:variable name="lcext" select="translate($ext, +                                       'ABCDEFGHIJKLMNOPQRSTUVWXYZ', +                                       'abcdefghijklmnopqrstuvwxyz')"/> + +  <xsl:if test="contains($graphic.extensions, +                         concat(' ', $lcext, ' '))">1</xsl:if> +</xsl:template> + +<xsl:template name="graphic.format.content-type"> +  <xsl:param name="format"/> +  <xsl:variable name="is.graphic.format"> +    <xsl:call-template name="is.graphic.format"> +      <xsl:with-param name="format" select="$format"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:if test="$is.graphic.format"> +    <xsl:choose> +      <xsl:when test="$format = ''"></xsl:when> +      <xsl:when test="$format = 'linespecific'"></xsl:when> +      <xsl:when test="$format = 'PS'">application/postscript</xsl:when> +      <xsl:when test="$format = 'PDF'">application/pdf</xsl:when> +      <xsl:when test="$format = 'PNG'">image/png</xsl:when> +      <xsl:when test="$format = 'SVG'">image/svg+xml</xsl:when> +      <xsl:when test="$format = 'JPG'">image/jpeg</xsl:when> +      <xsl:when test="$format = 'GIF87a'">image/gif</xsl:when> +      <xsl:when test="$format = 'GIF89a'">image/gif</xsl:when> +      <xsl:otherwise> +          <xsl:value-of select="concat('image/',  +            translate($format, &uppercase;, &lowercase;))"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:if> +</xsl:template> + + +<!-- ==================================================================== --> + +<xsl:template match="screenshot"> +  <fo:block> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="screeninfo"> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Override these templates for FO --> +<!-- ==================================================================== --> + +<xsl:template name="process.image"> +  <!-- When this template is called, the current node should be  --> +  <!-- a graphic, inlinegraphic, imagedata, or videodata. All    --> +  <!-- those elements have the same set of attributes, so we can --> +  <!-- handle them all in one place.                             --> + +  <xsl:variable name="scalefit"> +    <xsl:choose> +      <xsl:when test="$ignore.image.scaling != 0">0</xsl:when> +      <xsl:when test="@contentwidth">0</xsl:when> +      <xsl:when test="@contentdepth and  +                      @contentdepth != '100%'">0</xsl:when> +      <xsl:when test="@scale">0</xsl:when> +      <xsl:when test="@scalefit"><xsl:value-of select="@scalefit"/></xsl:when> +      <xsl:when test="@width or @depth">1</xsl:when> +      <xsl:otherwise>0</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="scale"> +    <xsl:choose> +      <xsl:when test="$ignore.image.scaling != 0">0</xsl:when> +      <xsl:when test="@contentwidth or @contentdepth">1.0</xsl:when> +      <xsl:when test="@scale"> +        <xsl:value-of select="@scale div 100.0"/> +      </xsl:when> +      <xsl:otherwise>1.0</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="filename"> +    <xsl:choose> +      <xsl:when test="local-name(.) = 'graphic' +                      or local-name(.) = 'inlinegraphic'"> +        <!-- handle legacy graphic and inlinegraphic by new template -->  +        <xsl:call-template name="mediaobject.filename"> +          <xsl:with-param name="object" select="."/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <!-- imagedata, videodata, audiodata --> +        <xsl:call-template name="mediaobject.filename"> +          <xsl:with-param name="object" select=".."/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="content-type"> +    <xsl:if test="@format"> +      <xsl:call-template name="graphic.format.content-type"> +        <xsl:with-param name="format" select="@format"/> +      </xsl:call-template> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="bgcolor"> +    <xsl:call-template name="pi.dbfo_background-color"> +      <xsl:with-param name="node" select=".."/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:external-graphic> +    <xsl:attribute name="src"> +      <xsl:call-template name="fo-external-image"> +        <xsl:with-param name="filename"> +          <xsl:if test="$img.src.path != '' and +                        not(starts-with($filename, '/')) and +                        not(contains($filename, '://'))"> +            <xsl:value-of select="$img.src.path"/> +          </xsl:if> +          <xsl:value-of select="$filename"/> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="width"> +      <xsl:choose> +        <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> +        <xsl:when test="contains(@width,'%')"> +          <xsl:value-of select="@width"/> +        </xsl:when> +        <xsl:when test="@width and not(@width = '')"> +          <xsl:call-template name="length-spec"> +            <xsl:with-param name="length" select="@width"/> +            <xsl:with-param name="default.units" select="'px'"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:when test="not(@depth) and $default.image.width != ''"> +          <xsl:call-template name="length-spec"> +            <xsl:with-param name="length" select="$default.image.width"/> +            <xsl:with-param name="default.units" select="'px'"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise>auto</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> + +    <xsl:attribute name="height"> +      <xsl:choose> +        <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> +        <xsl:when test="contains(@depth,'%')"> +          <xsl:value-of select="@depth"/> +        </xsl:when> +        <xsl:when test="@depth"> +          <xsl:call-template name="length-spec"> +            <xsl:with-param name="length" select="@depth"/> +            <xsl:with-param name="default.units" select="'px'"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise>auto</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> + +    <xsl:attribute name="content-width"> +      <xsl:choose> +        <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> +        <xsl:when test="contains(@contentwidth,'%')"> +          <xsl:value-of select="@contentwidth"/> +        </xsl:when> +        <xsl:when test="@contentwidth"> +          <xsl:call-template name="length-spec"> +            <xsl:with-param name="length" select="@contentwidth"/> +            <xsl:with-param name="default.units" select="'px'"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:when test="number($scale) != 1.0"> +          <xsl:value-of select="$scale * 100"/> +          <xsl:text>%</xsl:text> +        </xsl:when> +        <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when> +        <xsl:otherwise>auto</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> + +    <xsl:attribute name="content-height"> +      <xsl:choose> +        <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> +        <xsl:when test="contains(@contentdepth,'%')"> +          <xsl:value-of select="@contentdepth"/> +        </xsl:when> +        <xsl:when test="@contentdepth"> +          <xsl:call-template name="length-spec"> +            <xsl:with-param name="length" select="@contentdepth"/> +            <xsl:with-param name="default.units" select="'px'"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:when test="number($scale) != 1.0"> +          <xsl:value-of select="$scale * 100"/> +          <xsl:text>%</xsl:text> +        </xsl:when> +        <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when> +        <xsl:otherwise>auto</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> + +    <xsl:if test="$content-type != ''"> +      <xsl:attribute name="content-type"> +        <xsl:value-of select="concat('content-type:',$content-type)"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:if test="$bgcolor != ''"> +      <xsl:attribute name="background-color"> +        <xsl:value-of select="$bgcolor"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:if test="@align"> +      <xsl:attribute name="text-align"> +        <xsl:value-of select="@align"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:if test="@valign"> +      <xsl:attribute name="display-align"> +        <xsl:choose> +          <xsl:when test="@valign = 'top'">before</xsl:when> +          <xsl:when test="@valign = 'middle'">center</xsl:when> +          <xsl:when test="@valign = 'bottom'">after</xsl:when> +          <xsl:otherwise>auto</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +  </fo:external-graphic> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="graphic"> +  <xsl:choose> +    <xsl:when test="parent::inlineequation"> +      <xsl:call-template name="process.image"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:block> +        <xsl:if test="@align"> +          <xsl:attribute name="text-align"> +            <xsl:value-of select="@align"/> +          </xsl:attribute> +        </xsl:if> +        <xsl:call-template name="process.image"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="inlinegraphic"> +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:variable name="filename"> +    <xsl:choose> +      <xsl:when test="@entityref"> +        <xsl:value-of select="unparsed-entity-uri(@entityref)"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates select="@fileref"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="@format='linespecific'"> +      <xsl:choose> +        <xsl:when test="$use.extensions != '0' +                        and $textinsert.extension != '0'"> +          <xsl:choose> +            <xsl:when test="contains($vendor, 'SAXON')"> +              <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/> +            </xsl:when> +            <xsl:when test="contains($vendor, 'Apache Software Foundation')"> +              <xtext:insertfile href="{$filename}"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:message terminate="yes"> +                <xsl:text>Don't know how to insert files with </xsl:text> +                <xsl:value-of select="$vendor"/> +              </xsl:message> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +	<xsl:otherwise> +	  <xsl:message terminate="yes"> +	    <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/> +	    <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>  +	  </xsl:message> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="process.image"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="mediaobject|mediaobjectco"> + +  <xsl:variable name="olist" select="imageobject|imageobjectco +                     |videoobject|audioobject +                     |textobject"/> + +  <xsl:variable name="object.index"> +    <xsl:call-template name="select.mediaobject.index"> +      <xsl:with-param name="olist" select="$olist"/> +      <xsl:with-param name="count" select="1"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="object" select="$olist[position() = $object.index]"/> + +  <xsl:variable name="align"> +    <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:if test="$align != '' "> +      <xsl:attribute name="text-align"> +        <xsl:value-of select="$align"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:apply-templates select="$object"/> +    <xsl:apply-templates select="caption"/> +  </fo:block> +</xsl:template> + +<xsl:template match="inlinemediaobject"> +  <xsl:call-template name="select.mediaobject"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="imageobjectco"> +  <xsl:apply-templates select="imageobject"/> +  <xsl:apply-templates select="calloutlist"/> +</xsl:template> + +<xsl:template match="imageobject"> +  <xsl:choose> +    <xsl:when test="imagedata"> +      <xsl:apply-templates select="imagedata"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:instream-foreign-object> +        <xsl:apply-templates mode="copy-all"/> +      </fo:instream-foreign-object> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="copy-all"> +  <xsl:copy> +    <xsl:for-each select="@*"> +      <xsl:copy/> +    </xsl:for-each> +    <xsl:apply-templates mode="copy-all"/> +  </xsl:copy> +</xsl:template> + +<xsl:template match="text()|comment()|processing-instruction()" mode="copy-all"> +  <xsl:copy/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="imagedata"> +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:variable name="filename"> +    <xsl:call-template name="mediaobject.filename"> +      <xsl:with-param name="object" select=".."/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="@format='linespecific'"> +      <xsl:choose> +        <xsl:when test="$use.extensions != '0' +                        and $textinsert.extension != '0'"> +          <xsl:choose> +            <xsl:when test="contains($vendor, 'SAXON')"> +              <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/> +            </xsl:when> +            <xsl:when test="contains($vendor, 'Apache Software Foundation')"> +              <xtext:insertfile href="{$filename}"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:message terminate="yes"> +                <xsl:text>Don't know how to insert files with </xsl:text> +                <xsl:value-of select="$vendor"/> +              </xsl:message> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +	  <xsl:message terminate="yes"> +	    <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/> +	    <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>  +	  </xsl:message> +	</xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="process.image"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="videoobject"> +  <xsl:apply-templates select="videodata"/> +</xsl:template> + +<xsl:template match="videodata"> +  <xsl:call-template name="process.image"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="audioobject"> +  <xsl:apply-templates select="audiodata"/> +</xsl:template> + +<xsl:template match="audiodata"> +  <xsl:call-template name="process.image"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="textobject"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="textdata"> +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:variable name="filename"> +    <xsl:choose> +      <xsl:when test="@entityref"> +        <xsl:value-of select="unparsed-entity-uri(@entityref)"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates select="@fileref"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="encoding"> +    <xsl:choose> +      <xsl:when test="@encoding"> +        <xsl:value-of select="@encoding"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$textdata.default.encoding"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$use.extensions != '0' +                    and $textinsert.extension != '0'"> +      <xsl:choose> +        <xsl:when test="element-available('stext:insertfile')"> +          <stext:insertfile href="{$filename}" encoding="{$encoding}"/> +        </xsl:when> +        <xsl:when test="element-available('xtext:insertfile')"> +          <xtext:insertfile href="{$filename}"/> +        </xsl:when> +	<xsl:otherwise> +	  <xsl:message terminate="yes"> +	    <xsl:text>Don't know how to insert files with </xsl:text> +	    <xsl:value-of select="$vendor"/> +	  </xsl:message> +	</xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message terminate="yes"> +	<xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/> +	<xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>  +      </xsl:message> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="caption"> +  <fo:block> +    <xsl:if test="@align = 'right' or @align = 'left' or @align='center'"> +      <xsl:attribute name="text-align"><xsl:value-of +                         select="@align"/></xsl:attribute> +    </xsl:if> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="fo-external-image"> +  <xsl:param name="filename"/> + +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0 +                    or $fop.extensions != 0"> +      <xsl:value-of select="$filename"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="concat('url(', $filename, ')')"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- Resolve xml:base attributes --> +<xsl:template match="@fileref"> +  <!-- need a check for absolute urls --> +  <xsl:choose> +    <xsl:when test="contains(., ':') or starts-with(.,'/')"> +      <!-- it has a uri scheme or starts with '/', so it is an absolute uri --> +      <xsl:value-of select="."/> +    </xsl:when> +    <xsl:when test="$keep.relative.image.uris != 0"> +      <!-- leave it alone --> +      <xsl:value-of select="."/> +    </xsl:when> +    <xsl:otherwise> +      <!-- its a relative uri --> +      <xsl:call-template name="relative-uri"> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/highlight.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/highlight.xsl.svn-base new file mode 100644 index 0000000..829aad8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/highlight.xsl.svn-base @@ -0,0 +1,57 @@ +<?xml version='1.0'?>
 +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 +		xmlns:fo="http://www.w3.org/1999/XSL/Format"
 +		xmlns:xslthl="http://xslthl.sf.net"
 +                exclude-result-prefixes="xslthl"
 +                version='1.0'>
 +
 +<!-- ********************************************************************
 +     $Id$
 +     ********************************************************************
 +
 +     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'>
 +  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:string'>
 +  <fo:inline font-weight="bold" font-style="italic"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:comment'>
 +  <fo:inline font-style="italic"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:tag'>
 +  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:attribute'>
 +  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:value'>
 +  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<!--
 +<xsl:template match='xslthl:html'>
 +  <span style='background:#AFF'><font color='blue'><xsl:apply-templates/></font></span>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:xslt'>
 +  <span style='background:#AAA'><font color='blue'><xsl:apply-templates/></font></span>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:section'>
 +  <span style='background:yellow'><xsl:apply-templates/></span>
 +</xsl:template>
 +-->
 +
 +</xsl:stylesheet>
 +
 diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/htmltbl.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/htmltbl.xsl.svn-base new file mode 100644 index 0000000..1954d95 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/htmltbl.xsl.svn-base @@ -0,0 +1,217 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version="1.0"> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This 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="th.style"> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +</xsl:attribute-set> + +<!-- Outputs an fo:table only, not the caption --> +<xsl:template match="table|informaltable" mode="htmlTable"> + +  <xsl:variable name="numcols"> +    <xsl:call-template name="widest-html-row"> +      <xsl:with-param name="rows" select=".//tr"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="prop-columns" +                select=".//col[contains(@width, '%')] | +                        .//colgroup[contains(@width, '%')]"/> + +  <xsl:variable name="table.width"> +    <xsl:call-template name="table.width"/> +  </xsl:variable> + +  <fo:table xsl:use-attribute-sets="table.table.properties"> +    <xsl:choose> +      <xsl:when test="$fop.extensions != 0 or +                      $passivetex.extensions != 0"> +        <xsl:attribute name="table-layout">fixed</xsl:attribute> +      </xsl:when> +    </xsl:choose> +    <xsl:attribute name="width"> +      <xsl:choose> +        <xsl:when test="@width"> +          <xsl:value-of select="@width"/> +        </xsl:when> +        <xsl:when test="$table.width"> +          <xsl:value-of select="$table.width"/> +        </xsl:when> +        <xsl:otherwise>100%</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> +    <xsl:call-template name="make-html-table-columns"> +      <xsl:with-param name="count" select="$numcols"/> +    </xsl:call-template> +    <xsl:apply-templates select="thead" mode="htmlTable"/> +    <xsl:apply-templates select="tfoot" mode="htmlTable"/> +    <xsl:choose> +      <xsl:when test="tbody"> +        <xsl:apply-templates select="tbody" mode="htmlTable"/> +      </xsl:when> +      <xsl:otherwise> +        <fo:table-body start-indent="0pt" end-indent="0pt"> +          <xsl:apply-templates select="tr" mode="htmlTable"/> +        </fo:table-body> +      </xsl:otherwise> +    </xsl:choose> +  </fo:table> + +</xsl:template> + +<xsl:template match="caption" mode="htmlTable"> +  <!-- Handled by formal.object.heading --> +</xsl:template> + +<xsl:template name="widest-html-row"> +  <xsl:param name="rows" select="''"/> +  <xsl:param name="count" select="0"/> +  <xsl:choose> +    <xsl:when test="count($rows) = 0"> +      <xsl:value-of select="$count"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$count > count($rows[1]/*)"> +          <xsl:call-template name="widest-html-row"> +            <xsl:with-param name="rows" select="$rows[position() > 1]"/> +            <xsl:with-param name="count" select="$count"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="widest-html-row"> +            <xsl:with-param name="rows" select="$rows[position() > 1]"/> +            <xsl:with-param name="count" select="count($rows[1]/*)"/> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="make-html-table-columns"> +  <xsl:param name="count" select="0"/> +  <xsl:param name="number" select="1"/> + +  <xsl:choose> +    <xsl:when test="col|colgroup/col"> +      <xsl:for-each select="col|colgroup/col"> +        <fo:table-column> +          <xsl:attribute name="column-number"> +            <xsl:number from="table|informaltable" level="any" format="1"/> +          </xsl:attribute> +          <xsl:if test="@width"> +            <xsl:attribute name="column-width"> +              <xsl:choose> +                <xsl:when test="$fop.extensions != 0 and  +                                contains(@width, '%')"> +                  <xsl:value-of select="concat('proportional-column-width(', +                                               substring-before(@width, '%'), +                                               ')')"/> +                </xsl:when> +                <xsl:otherwise> +                  <xsl:value-of select="@width"/> +                </xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </xsl:if> +        </fo:table-column> +      </xsl:for-each> +    </xsl:when> +    <xsl:when test="$fop.extensions != 0"> +      <xsl:if test="$number <= $count"> +        <fo:table-column column-number="{$number}" +                         column-width="{6.5 div $count}in"/> +        <xsl:call-template name="make-html-table-columns"> +          <xsl:with-param name="count" select="$count"/> +          <xsl:with-param name="number" select="$number + 1"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="tbody" mode="htmlTable"> +  <fo:table-body border-bottom-width="0.25pt" +                 border-bottom-style="solid" +                 border-bottom-color="black" +                 start-indent="0pt" +                 end-indent="0pt"> +    <xsl:apply-templates mode="htmlTable"/> +  </fo:table-body> +</xsl:template> + +<xsl:template match="td" mode="htmlTable"> +  <xsl:variable name="bgcolor"> +    <xsl:call-template name="pi.dbfo_bgcolor"/> +  </xsl:variable> +  <fo:table-cell xsl:use-attribute-sets="table.cell.padding"> +    <xsl:call-template name="table.cell.properties"> +      <xsl:with-param name="bgcolor.pi" select="$bgcolor"/> +      <xsl:with-param name="rowsep.inherit" select="0"/> +      <xsl:with-param name="colsep.inherit" select="0"/> +    </xsl:call-template> +    <fo:block> +      <xsl:call-template name="table.cell.block.properties"/> +      <xsl:apply-templates/> +    </fo:block> +  </fo:table-cell> +</xsl:template> + +<xsl:template match="tfoot" mode="htmlTable"> +  <fo:table-footer start-indent="0pt" +                   end-indent="0pt"> +    <xsl:apply-templates mode="htmlTable"/> +  </fo:table-footer> +</xsl:template> + +<xsl:template match="th" mode="htmlTable"> +  <xsl:variable name="bgcolor"> +    <xsl:call-template name="pi.dbfo_bgcolor"/> +  </xsl:variable> +  <fo:table-cell xsl:use-attribute-sets="th.style table.cell.padding"> +    <xsl:call-template name="table.cell.properties"> +      <xsl:with-param name="bgcolor.pi" select="$bgcolor"/> +      <xsl:with-param name="rowsep.inherit" select="0"/> +      <xsl:with-param name="colsep.inherit" select="0"/> +    </xsl:call-template> +    <fo:block> +      <xsl:call-template name="table.cell.block.properties"/> +      <xsl:apply-templates/> +    </fo:block> +  </fo:table-cell> +</xsl:template> + +<xsl:template match="thead" mode="htmlTable"> +  <fo:table-header border-bottom-width="0.25pt" +                   border-bottom-style="solid" +                   border-bottom-color="black" +                   start-indent="0pt" +                   end-indent="0pt" +                   font-weight="bold"> +    <xsl:apply-templates mode="htmlTable"/> +  </fo:table-header> +</xsl:template> + +<xsl:template match="tr" mode="htmlTable"> +  <fo:table-row> +    <xsl:call-template name="table.row.properties"/> +    <xsl:apply-templates mode="htmlTable"/> +  </fo:table-row> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/index.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/index.xsl.svn-base new file mode 100644 index 0000000..d501844 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/index.xsl.svn-base @@ -0,0 +1,479 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY primary   'normalize-space(concat(primary/@sortas, primary[not(@sortas)]))'> +<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas)]))'> +<!ENTITY tertiary  'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas)]))'> +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="index"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + + <xsl:if test="$generate.index != 0"> +  <xsl:choose> +    <xsl:when test="$make.index.markup != 0"> +      <fo:block> +        <xsl:call-template name="generate-index-markup"> +          <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/> +        </xsl:call-template> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}"> +        <xsl:call-template name="index.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +      <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0"> +        <xsl:call-template name="generate-index"> +          <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> + </xsl:if> +</xsl:template> + +<xsl:template match="book/index|part/index"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + + <xsl:if test="$generate.index != 0"> +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass"> +        <xsl:if test="$make.index.markup != 0">body</xsl:if> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}"> +        <xsl:call-template name="index.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +      <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0"> + +        <xsl:choose> +          <xsl:when test="$make.index.markup != 0"> +            <fo:block wrap-option='no-wrap' +                      white-space-collapse='false' +                      xsl:use-attribute-sets="monospace.verbatim.properties" +                      linefeed-treatment="preserve"> +              <xsl:call-template name="generate-index-markup"> +                <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/> +              </xsl:call-template> +            </fo:block> +          </xsl:when> +          <xsl:when test="indexentry|indexdiv/indexentry"> +            <xsl:apply-templates/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="generate-index"> +              <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/> +            </xsl:call-template> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:if> +    </fo:flow> +  </fo:page-sequence> + </xsl:if> +</xsl:template> + +<xsl:template match="setindex"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + + <xsl:if test="$generate.index != 0"> +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass"> +        <xsl:choose> +          <xsl:when test="$make.index.markup != 0">body</xsl:when> +          <xsl:otherwise>index</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}"> +        <xsl:call-template name="setindex.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +      <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0"> + +        <xsl:choose> +          <xsl:when test="$make.index.markup != 0"> +            <fo:block wrap-option='no-wrap' +                      white-space-collapse='false' +                      xsl:use-attribute-sets="monospace.verbatim.properties" +                      linefeed-treatment="preserve"> +              <xsl:call-template name="generate-index-markup"> +                <xsl:with-param name="scope" select="/"/> +              </xsl:call-template> +            </fo:block> +          </xsl:when> +          <xsl:when test="indexentry|indexdiv/indexentry"> +            <xsl:apply-templates/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="generate-index"> +              <xsl:with-param name="scope" select="/"/> +            </xsl:call-template> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:if> +    </fo:flow> +  </fo:page-sequence> + </xsl:if> +</xsl:template> + +<xsl:template match="index/indexinfo"></xsl:template> +<xsl:template match="index/info"></xsl:template> +<xsl:template match="index/title"></xsl:template> +<xsl:template match="index/subtitle"></xsl:template> +<xsl:template match="index/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="indexdiv.title"> +  <xsl:param name="title"/> +  <xsl:param name="titlecontent"/> + +  <fo:block xsl:use-attribute-sets="index.div.title.properties"> +    <xsl:choose> +      <xsl:when test="$title"> +        <xsl:apply-templates select="." mode="object.title.markup"> +          <xsl:with-param name="allow-anchors" select="1"/> +        </xsl:apply-templates> +      </xsl:when> +      <xsl:otherwise> +        <xsl:copy-of select="$titlecontent"/> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<xsl:template match="indexdiv"> +  <fo:block> +    <xsl:call-template name="indexdiv.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="indexdiv/title"/> +<xsl:template match="indexdiv/subtitle"/> +<xsl:template match="indexdiv/titleabbrev"/> + +<!-- ==================================================================== --> + +<!-- Text used for distiguishing between normal and significant entries --> +<xsl:variable name="significant.flag">.tnacifingis</xsl:variable> + +<xsl:template match="indexterm" name="indexterm"> +  <!-- Temporal workaround for bug in AXF --> +  <xsl:variable name="wrapper.name"> +    <xsl:choose> +      <xsl:when test="$axf.extensions != 0"> +        <xsl:call-template name="inline.or.block"/> +      </xsl:when> +      <xsl:otherwise>fo:wrapper</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:element name="{$wrapper.name}"> +    <xsl:attribute name="id"> +      <xsl:call-template name="object.id"/> +    </xsl:attribute> +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:attribute name="rx:key"> +          <xsl:value-of select="&primary;"/> +          <xsl:if test="@significance='preferred'"><xsl:value-of select="$significant.flag"/></xsl:if> +          <xsl:if test="secondary"> +            <xsl:text>, </xsl:text> +            <xsl:value-of select="&secondary;"/> +          </xsl:if> +          <xsl:if test="tertiary"> +            <xsl:text>, </xsl:text> +            <xsl:value-of select="&tertiary;"/> +          </xsl:if> +        </xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:comment> +          <xsl:call-template name="comment-escape-string"> +            <xsl:with-param name="string"> +              <xsl:value-of select="primary"/> +              <xsl:if test="secondary"> +                <xsl:text>, </xsl:text> +                <xsl:value-of select="secondary"/> +              </xsl:if> +              <xsl:if test="tertiary"> +                <xsl:text>, </xsl:text> +                <xsl:value-of select="tertiary"/> +              </xsl:if> +            </xsl:with-param> +          </xsl:call-template> +        </xsl:comment> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:element> +</xsl:template> + +<xsl:template match="indexterm[@class='startofrange']"> +  <xsl:choose> +    <xsl:when test="$xep.extensions != 0"> +      <rx:begin-index-range> +        <xsl:call-template name="anchor"/> +        <xsl:attribute name="rx:key"> +          <xsl:value-of select="&primary;"/> +          <xsl:if test="@significance='preferred'"><xsl:value-of select="$significant.flag"/></xsl:if> +          <xsl:if test="secondary"> +            <xsl:text>, </xsl:text> +            <xsl:value-of select="&secondary;"/> +          </xsl:if> +          <xsl:if test="tertiary"> +            <xsl:text>, </xsl:text> +            <xsl:value-of select="&tertiary;"/> +          </xsl:if> +        </xsl:attribute> +      </rx:begin-index-range> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="indexterm"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="indexterm[@class='endofrange']"> +  <xsl:choose> +    <xsl:when test="$xep.extensions != 0"> +      <rx:end-index-range> +        <xsl:attribute name="ref-id"> +          <xsl:value-of select="@startref"/> +        </xsl:attribute> +      </rx:end-index-range> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="indexterm"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="indexentry"> +  <fo:block> +    <!-- don't process 'seeie's from here --> +    <xsl:apply-templates select="primaryie|secondaryie|tertiaryie|seealsoie"/> +  </fo:block> +</xsl:template> + +<xsl:template match="primaryie"> +  <fo:block> +    <xsl:apply-templates/> +    <xsl:if test="following-sibling::seeie"> +      <xsl:text> (</xsl:text> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'see'"/> +      </xsl:call-template> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="following-sibling::seeie"/> +      <xsl:text>)</xsl:text> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="secondaryie"> +  <fo:block start-indent="1pc"> +    <xsl:apply-templates/> +    <xsl:if test="following-sibling::seeie"> +      <xsl:text> (</xsl:text> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'see'"/> +      </xsl:call-template> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="following-sibling::seeie"/> +      <xsl:text>)</xsl:text> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="tertiaryie"> +  <fo:block start-indent="2pc"> +    <xsl:apply-templates/> +    <xsl:if test="following-sibling::seeie"> +      <xsl:text> (</xsl:text> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'see'"/> +      </xsl:call-template> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="following-sibling::seeie"/> +      <xsl:text>)</xsl:text> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="seeie"> +  <fo:inline> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<xsl:template match="seealsoie"> +  <fo:block> +    <xsl:attribute name="start-indent"> +      <xsl:choose> +        <xsl:when test="preceding-sibling::tertiaryie">3pc</xsl:when> +        <xsl:when test="preceding-sibling::secondaryie">2pc</xsl:when> +        <xsl:otherwise>1pc</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> +    <xsl:text>(</xsl:text> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'seealso'"/> +    </xsl:call-template> +    <xsl:text> </xsl:text> +    <xsl:apply-templates/> +    <xsl:text>)</xsl:text> +  </fo:block> +</xsl:template> + +<!-- Determines if an object should be inserted as an fo:inline +     or an fo:block.  Used for indexterms --> +<xsl:template name="inline.or.block"> +  <xsl:param name="parentnode" select=".."/> + +  <xsl:variable name="parent" select="local-name($parentnode)"/> + +  <xsl:variable name="block.parents" select="'|answer|appendix|appendixinfo|article|articleinfo|bibliodiv|bibliography|bibliographyinfo|blockinfo|blockquote|bookinfo|callout|caution|chapter|chapterinfo|dedication|example|figure|formalpara|funcsynopsisinfo|glossary|glossaryinfo|glossdef|glossdiv|glossentry|highlights|important|index|indexinfo|info|informalexample|informalfigure|informaltable|itemizedlist|legalnotice|listitem|msgexplan|msgtext|note|objectinfo|orderedlist|partinfo|partintro|preface|prefaceinfo|procedure|qandadiv|qandaset|question|refentry|refentryinfo|referenceinfo|refmeta|refmiscinfo|refsect1|refsect1info|refsect2|refsect2info|refsect3|refsect3info|refsection|refsectioninfo|refsynopsisdiv|refsynopsisdivinfo|revdescription|screeninfo|sect1|sect1info|sect2|sect2info|sect3|sect3info|sect4|sect4info|sect5|sect5info|section|sectioninfo|setindex|setindexinfo|setinfo|sidebar|sidebarinfo|simplesect|step|table|task|taskprerequisites|taskrelated|tasksummary|tip|variablelist|warning|'"/> + +  <xsl:choose> +    <xsl:when test="contains($parent, $block.parents)">fo:block</xsl:when> +    <xsl:otherwise>fo:inline</xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/info.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/info.xsl.svn-base new file mode 100644 index 0000000..5bb00e2 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/info.xsl.svn-base @@ -0,0 +1,34 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- These templates define the "default behavior" for info +     elements.  Even if you don't process the *info wrappers, +     some of these elements are needed because the elements are +     processed from named templates that are called with modes. +     Since modes aren't sticky, these rules apply.  +     (TODO: clarify this comment) --> + +<!-- ==================================================================== --> +<!-- called from named templates in a given mode --> + +<xsl:template match="corpauthor"> +  <fo:inline> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/inline.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/inline.xsl.svn-base new file mode 100644 index 0000000..d398dec --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/inline.xsl.svn-base @@ -0,0 +1,1234 @@ +<?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:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:xlink='http://www.w3.org/1999/xlink' +                exclude-result-prefixes="xlink" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This 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="linkend" select="$node/@linkend"/> +  <xsl:param name="xhref" select="$node/@xlink:href"/> + +  <xsl:choose> +    <xsl:when test="$xhref +                    and (not($node/@xlink:type) or  +                         $node/@xlink:type='simple')"> + +      <!-- Is it a local idref? --> +      <xsl:variable name="is.idref"> +        <xsl:choose> +          <!-- if the href starts with # and does not contain an "(" --> +          <!-- or if the href starts with #xpointer(id(, it's just an ID --> +          <xsl:when test="starts-with($xhref,'#') +                          and (not(contains($xhref,'(')) +                          or starts-with($xhref, +                                     '#xpointer(id('))">1</xsl:when> +          <xsl:otherwise>0</xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <!-- Is it an olink ? --> +      <xsl:variable name="is.olink"> +        <xsl:choose> +	  <!-- If xlink:role="http://docbook.org/xlink/role/olink" --> +          <!-- and if the href contains # --> +          <xsl:when test="contains($xhref,'#') and +	       @xlink:role = $xolink.role">1</xsl:when> +          <xsl:otherwise>0</xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$is.idref = 1"> + +          <xsl:variable name="idref"> +            <xsl:call-template name="xpointer.idref"> +              <xsl:with-param name="xpointer" select="$xhref"/> +            </xsl:call-template> +          </xsl:variable> + +          <xsl:variable name="targets" select="key('id',$idref)"/> +          <xsl:variable name="target" select="$targets[1]"/> + +          <xsl:call-template name="check.id.unique"> +            <xsl:with-param name="linkend" select="$idref"/> +          </xsl:call-template> + +          <xsl:choose> +            <xsl:when test="count($target) = 0"> +              <xsl:message> +                <xsl:text>XLink to nonexistent id: </xsl:text> +                <xsl:value-of select="$idref"/> +              </xsl:message> +              <xsl:copy-of select="$content"/> +            </xsl:when> + +            <xsl:otherwise> +              <fo:basic-link internal-destination="{$idref}"> +                <xsl:copy-of select="$content"/> +              </fo:basic-link> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> + +        <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> +          <fo:basic-link external-destination="url({$xhref})"> +            <xsl:copy-of select="$content"/> +          </fo:basic-link> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <xsl:when test="$linkend"> +      <xsl:variable name="targets" select="key('id',$linkend)"/> +      <xsl:variable name="target" select="$targets[1]"/> + +      <xsl:call-template name="check.id.unique"> +        <xsl:with-param name="linkend" select="$linkend"/> +      </xsl:call-template> + +      <xsl:choose> +        <xsl:when test="count($target) = 0"> +          <xsl:message> +            <xsl:text>XLink to nonexistent id: </xsl:text> +            <xsl:value-of select="$linkend"/> +          </xsl:message> +          <xsl:copy-of select="$content"/> +        </xsl:when> + +        <xsl:otherwise> +          <fo:basic-link internal-destination="{$linkend}"> +            <xsl:copy-of select="$content"/> +          </fo:basic-link> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:copy-of select="$content"/> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="inline.charseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <xsl:choose> +    <xsl:when test="@dir"> +      <fo:inline> +        <xsl:attribute name="direction"> +          <xsl:choose> +            <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +            <xsl:otherwise>rtl</xsl:otherwise> +          </xsl:choose> +        </xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:inline> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$content"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="inline.monoseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline xsl:use-attribute-sets="monospace.properties"> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.boldseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline font-weight="bold"> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.italicseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline font-style="italic"> +    <xsl:call-template name="anchor"/> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.boldmonoseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline font-weight="bold" xsl:use-attribute-sets="monospace.properties"> +    <xsl:call-template name="anchor"/> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.italicmonoseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline font-style="italic" xsl:use-attribute-sets="monospace.properties"> +    <xsl:call-template name="anchor"/> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.superscriptseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline xsl:use-attribute-sets="superscript.properties"> +    <xsl:call-template name="anchor"/> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:choose> +      <xsl:when test="$fop.extensions != 0"> +        <xsl:attribute name="vertical-align">super</xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="baseline-shift">super</xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.subscriptseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline xsl:use-attribute-sets="subscript.properties"> +    <xsl:call-template name="anchor"/> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:choose> +      <xsl:when test="$fop.extensions != 0"> +        <xsl:attribute name="vertical-align">sub</xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="baseline-shift">sub</xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<!-- ==================================================================== --> +<!-- some special cases --> + +<xsl:template match="author"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:call-template name="person.name"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="editor"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:call-template name="person.name"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="othercredit"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:call-template name="person.name"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="authorinitials"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="accel"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="action"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="application"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="classname"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="exceptionname"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="interfacename"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="methodname"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="command"> +  <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="computeroutput"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="constant"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="database"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="date"> +  <!-- should this support locale-specific formatting? how? --> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="errorcode"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="errorname"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="errortype"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="errortext"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="envar"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="filename"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="function"> +  <xsl:choose> +    <xsl:when test="$function.parens != '0' +                    and (parameter or function or replaceable)"> +      <xsl:variable name="nodes" select="text()|*"/> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:call-template name="simple.xlink"> +            <xsl:with-param name="content"> +              <xsl:apply-templates select="$nodes[1]"/> +            </xsl:with-param> +          </xsl:call-template> +        </xsl:with-param> +      </xsl:call-template> +      <xsl:text>(</xsl:text> +      <xsl:apply-templates select="$nodes[position()>1]"/> +      <xsl:text>)</xsl:text> +    </xsl:when> +    <xsl:otherwise> +     <xsl:call-template name="inline.monoseq"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="function/parameter" priority="2"> +  <xsl:call-template name="inline.italicmonoseq"/> +  <xsl:if test="following-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="function/replaceable" priority="2"> +  <xsl:call-template name="inline.italicmonoseq"/> +  <xsl:if test="following-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="guibutton"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="guiicon"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="guilabel"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="guimenu"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="guimenuitem"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="guisubmenu"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="hardware"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="interface"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="interfacedefinition"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="keycap"> +  <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="keycode"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="keysym"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="literal"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="code"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="medialabel"> +  <xsl:call-template name="inline.italicseq"/> +</xsl:template> + +<xsl:template match="shortcut"> +  <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="mousebutton"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="option"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="package"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="parameter"> +  <xsl:call-template name="inline.italicmonoseq"/> +</xsl:template> + +<xsl:template match="property"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="prompt"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="replaceable"> +  <xsl:call-template name="inline.italicmonoseq"/> +</xsl:template> + +<xsl:template match="returnvalue"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="structfield"> +  <xsl:call-template name="inline.italicmonoseq"/> +</xsl:template> + +<xsl:template match="structname"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="symbol"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="systemitem"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="token"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="type"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="userinput"> +  <xsl:call-template name="inline.boldmonoseq"/> +</xsl:template> + +<xsl:template match="abbrev"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="acronym"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="citerefentry"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="citetitle"> +  <xsl:choose> +    <xsl:when test="@pubwork = 'article'"> +      <xsl:call-template name="gentext.startquote"/> +      <xsl:call-template name="inline.charseq"/> +      <xsl:call-template name="gentext.endquote"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="inline.italicseq"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="emphasis"> +  <xsl:variable name="depth"> +    <xsl:call-template name="dot.count"> +      <xsl:with-param name="string"> +        <xsl:number level="multiple"/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="@role='bold' or @role='strong'"> +      <xsl:call-template name="inline.boldseq"/> +    </xsl:when> +    <xsl:when test="@role='underline'"> +      <fo:inline text-decoration="underline"> +        <xsl:call-template name="inline.charseq"/> +      </fo:inline> +    </xsl:when> +    <xsl:when test="@role='strikethrough'"> +      <fo:inline text-decoration="line-through"> +        <xsl:call-template name="inline.charseq"/> +      </fo:inline> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$depth mod 2 = 1"> +          <fo:inline font-style="normal"> +            <xsl:apply-templates/> +          </fo:inline> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="inline.italicseq"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="foreignphrase"> +  <xsl:call-template name="inline.italicseq"/> +</xsl:template> + +<xsl:template match="markup"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="phrase"> +  <xsl:call-template name="inline.charseq"/> +</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"> +  <fo:inline font-style="italic"> +    <xsl:call-template name="inline.charseq"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="superscript"> +  <xsl:call-template name="inline.superscriptseq"/> +</xsl:template> + +<xsl:template match="subscript"> +  <xsl:call-template name="inline.subscriptseq"/> +</xsl:template> + +<xsl:template match="trademark"> +  <xsl:call-template name="inline.charseq"/> +  <xsl:choose> +    <xsl:when test="@class = 'copyright' +                    or @class = 'registered'"> +      <xsl:call-template name="dingbat"> +        <xsl:with-param name="dingbat" select="@class"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="@class = 'service'"> +      <xsl:call-template name="inline.superscriptseq"> +        <xsl:with-param name="content" select="'SM'"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="dingbat"> +        <xsl:with-param name="dingbat" select="'trademark'"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="firstterm"> +  <xsl:call-template name="glossterm"> +    <xsl:with-param name="firstterm" select="1"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="glossterm" name="glossterm"> +  <xsl:param name="firstterm" select="0"/> + +  <xsl:choose> +    <xsl:when test="($firstterm.only.link = 0 or $firstterm = 1) and @linkend"> +      <xsl:variable name="targets" select="key('id',@linkend)"/> +      <xsl:variable name="target" select="$targets[1]"/> + +      <xsl:choose> +        <xsl:when test="$target"> +          <fo:basic-link internal-destination="{@linkend}"  +                         xsl:use-attribute-sets="xref.properties"> +            <xsl:call-template name="inline.italicseq"/> +          </fo:basic-link> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="inline.italicseq"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <xsl:when test="not(@linkend) +                    and ($firstterm.only.link = 0 or $firstterm = 1) +                    and ($glossterm.auto.link != 0) +                    and $glossary.collection != ''"> +      <xsl:variable name="term"> +        <xsl:choose> +          <xsl:when test="@baseform"><xsl:value-of select="@baseform"/></xsl:when> +          <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise> +        </xsl:choose> +      </xsl:variable> +      <xsl:variable name="cterm" +           select="(document($glossary.collection,.)//glossentry[glossterm=$term])[1]"/> + +      <xsl:choose> +        <xsl:when test="not($cterm)"> +          <xsl:message> +            <xsl:text>There's no entry for </xsl:text> +            <xsl:value-of select="$term"/> +            <xsl:text> in </xsl:text> +            <xsl:value-of select="$glossary.collection"/> +          </xsl:message> +          <xsl:call-template name="inline.italicseq"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:variable name="id"> +            <xsl:call-template name="object.id"> +              <xsl:with-param name="object" select="$cterm"/> +            </xsl:call-template> +          </xsl:variable> +          <fo:basic-link internal-destination="{$id}" +                         xsl:use-attribute-sets="xref.properties"> +            <xsl:call-template name="inline.italicseq"/> +          </fo:basic-link> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <xsl:when test="not(@linkend) +                    and ($firstterm.only.link = 0 or $firstterm = 1) +                    and $glossterm.auto.link != 0"> +      <xsl:variable name="term"> +        <xsl:choose> +          <xsl:when test="@baseform"> +            <xsl:value-of select="@baseform"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="."/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="targets" +                    select="//glossentry[glossterm=$term or 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> +          <xsl:variable name="termid"> +            <xsl:call-template name="object.id"> +              <xsl:with-param name="object" select="$target"/> +            </xsl:call-template> +          </xsl:variable> + +          <fo:basic-link internal-destination="{$termid}" +                         xsl:use-attribute-sets="xref.properties"> +            <xsl:call-template name="inline.charseq"/> +          </fo:basic-link> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="inline.italicseq"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="termdef"> +  <fo:inline> +    <xsl:call-template name="gentext.template"> +      <xsl:with-param name="context" select="'termdef'"/> +      <xsl:with-param name="name" select="'prefix'"/> +    </xsl:call-template> +    <xsl:apply-templates/> +    <xsl:call-template name="gentext.template"> +      <xsl:with-param name="context" select="'termdef'"/> +      <xsl:with-param name="name" select="'suffix'"/> +    </xsl:call-template> +  </fo:inline> +</xsl:template> + +<xsl:template match="sgmltag|tag"> +  <xsl:variable name="class"> +    <xsl:choose> +      <xsl:when test="@class"> +        <xsl:value-of select="@class"/> +      </xsl:when> +      <xsl:otherwise>element</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$class='attribute'"> +      <xsl:call-template name="inline.monoseq"/> +    </xsl:when> +    <xsl:when test="$class='attvalue'"> +      <xsl:call-template name="inline.monoseq"/> +    </xsl:when> +    <xsl:when test="$class='element'"> +      <xsl:call-template name="inline.monoseq"/> +    </xsl:when> +    <xsl:when test="$class='endtag'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text></</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='genentity'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text>&</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>;</xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='numcharref'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text>&#</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>;</xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='paramentity'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text>%</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>;</xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='pi'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text><?</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='xmlpi'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text><?</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>?></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='starttag'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text><</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='emptytag'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text><</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>/></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='sgmlcomment' or $class='comment'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text><!--</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>--></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="inline.charseq"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="email"> +  <xsl:call-template name="inline.monoseq"> +    <xsl:with-param name="content"> +      <fo:inline keep-together.within-line="always" hyphenate="false"> +        <xsl:if test="not($email.delimiters.enabled = 0)"> +          <xsl:text><</xsl:text> +        </xsl:if> +        <xsl:apply-templates/> +        <xsl:if test="not($email.delimiters.enabled = 0)"> +          <xsl:text>></xsl:text> +        </xsl:if> +      </fo:inline> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="keycombo"> +  <xsl:variable name="action" select="@action"/> +  <xsl:variable name="joinchar"> +    <xsl:choose> +      <xsl:when test="$action='seq'"><xsl:text> </xsl:text></xsl:when> +      <xsl:when test="$action='simul'">+</xsl:when> +      <xsl:when test="$action='press'">-</xsl:when> +      <xsl:when test="$action='click'">-</xsl:when> +      <xsl:when test="$action='double-click'">-</xsl:when> +      <xsl:when test="$action='other'"></xsl:when> +      <xsl:otherwise>+</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:for-each select="*"> +    <xsl:if test="position()>1"><xsl:value-of select="$joinchar"/></xsl:if> +    <xsl:apply-templates select="."/> +  </xsl:for-each> +</xsl:template> + +<xsl:template match="uri"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="menuchoice"> +  <xsl:variable name="shortcut" select="./shortcut"/> +  <xsl:call-template name="process.menuchoice"/> +  <xsl:if test="$shortcut"> +    <xsl:text> (</xsl:text> +    <xsl:apply-templates select="$shortcut"/> +    <xsl:text>)</xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template name="process.menuchoice"> +  <xsl:param name="nodelist" select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) --> +  <xsl:param name="count" select="1"/> + +  <xsl:variable name="mm.separator"> +    <xsl:choose> +      <xsl:when test="($fop.extensions != 0 or $fop1.extensions != 0 ) and +                contains($menuchoice.menu.separator, '→')"> +        <fo:inline font-family="Symbol"> +          <xsl:copy-of select="$menuchoice.menu.separator"/> +        </fo:inline> +      </xsl:when> +      <xsl:otherwise> +        <xsl:copy-of select="$menuchoice.menu.separator"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$count>count($nodelist)"></xsl:when> +    <xsl:when test="$count=1"> +      <xsl:apply-templates select="$nodelist[$count=position()]"/> +      <xsl:call-template name="process.menuchoice"> +        <xsl:with-param name="nodelist" select="$nodelist"/> +        <xsl:with-param name="count" select="$count+1"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="node" select="$nodelist[$count=position()]"/> +      <xsl:choose> +        <xsl:when test="local-name($node)='guimenuitem' +                        or local-name($node)='guisubmenu'"> +          <xsl:copy-of select="$mm.separator"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:copy-of select="$menuchoice.separator"/> +        </xsl:otherwise> +      </xsl:choose> +      <xsl:apply-templates select="$node"/> +      <xsl:call-template name="process.menuchoice"> +        <xsl:with-param name="nodelist" select="$nodelist"/> +        <xsl:with-param name="count" select="$count+1"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="optional"> +  <xsl:value-of select="$arg.choice.opt.open.str"/> +  <xsl:call-template name="inline.charseq"/> +  <xsl:value-of select="$arg.choice.opt.close.str"/> +</xsl:template> + +<xsl:template match="citation"> +  <!-- todo: integrate with bibliography collection --> +  <xsl:variable name="targets" select="(//biblioentry | //bibliomixed)[abbrev = string(current())]"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:choose> +    <!-- try automatic linking based on match to abbrev --> +    <xsl:when test="$target and not(xref) and not(link)"> + +      <xsl:text>[</xsl:text> +      <fo:basic-link> +        <xsl:attribute name="internal-destination"> +          <xsl:call-template name="object.id"> +            <xsl:with-param name="object" select="$target"/> +          </xsl:call-template> +        </xsl:attribute> + +	<xsl:choose> +	  <xsl:when test="$bibliography.numbered != 0"> +	    <xsl:apply-templates select="$target" mode="citation"/> +	  </xsl:when> +	  <xsl:otherwise> +	    <xsl:call-template name="inline.charseq"/> +	  </xsl:otherwise> +	</xsl:choose> +      +      </fo:basic-link> +      <xsl:text>]</xsl:text> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:text>[</xsl:text> +      <xsl:call-template name="inline.charseq"/> +      <xsl:text>]</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="citation"> +  <xsl:number from="bibliography" count="biblioentry|bibliomixed" +	      level="any" format="1"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="comment[&comment.block.parents;]|remark[&comment.block.parents;]"> +  <xsl:if test="$show.comments != 0"> +    <fo:block font-style="italic"> +      <xsl:call-template name="inline.charseq"/> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="comment|remark"> +  <xsl:if test="$show.comments != 0"> +    <fo:inline font-style="italic"> +      <xsl:call-template name="inline.charseq"/> +    </fo:inline> +  </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="productname"> +  <xsl:call-template name="inline.charseq"/> +  <xsl:if test="@class"> +    <xsl:call-template name="dingbat"> +      <xsl:with-param name="dingbat" select="@class"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template match="productnumber"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="pob|street|city|state|postcode|country|otheraddr"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="phone|fax"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<!-- in Addresses, for example --> +<xsl:template match="honorific|firstname|surname|lineage|othername"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="person"> +  <xsl:apply-templates select="personname"/> +</xsl:template> + +<xsl:template match="personname"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:call-template name="person.name"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="jobtitle"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="org"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="orgname"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="orgdiv"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="affiliation"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="beginpage"> +  <!-- does nothing; this *is not* markup to force a page break. --> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/keywords.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/keywords.xsl.svn-base new file mode 100644 index 0000000..6e4b156 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/keywords.xsl.svn-base @@ -0,0 +1,21 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:template match="keywordset"></xsl:template> +<xsl:template match="subjectset"></xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/lists.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/lists.xsl.svn-base new file mode 100644 index 0000000..ffdfaec --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/lists.xsl.svn-base @@ -0,0 +1,1287 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="itemizedlist"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="pi-label-width"> +    <xsl:call-template name="pi.dbfo_label-width"/> +  </xsl:variable> + +  <xsl:variable name="label-width"> +    <xsl:choose> +      <xsl:when test="$pi-label-width = ''"> +	<xsl:value-of select="$itemizedlist.label.width"/> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="$pi-label-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +      select="*[not(self::listitem +                or self::title +                or self::titleabbrev)] +              |comment()[not(preceding-sibling::listitem)] +              |processing-instruction()[not(preceding-sibling::listitem)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates  +          select="listitem +                  |comment()[preceding-sibling::listitem] +                  |processing-instruction()[preceding-sibling::listitem]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="itemizedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing itemizedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +	<xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<xsl:template match="itemizedlist/title|orderedlist/title"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/title" mode="vl.as.list"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/title" mode="vl.as.blocks"> +  <!--nop--> +</xsl:template> + +<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev"> +  <!--nop--> +</xsl:template> + +<xsl:template match="procedure/titleabbrev"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/titleabbrev" mode="vl.as.list"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/titleabbrev" mode="vl.as.blocks"> +  <!--nop--> +</xsl:template> + +<xsl:template match="itemizedlist/listitem"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="item.contents"> +    <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="itemizedlist.label.properties"> +      <fo:block> +        <xsl:call-template name="itemizedlist.label.markup"> +          <xsl:with-param name="itemsymbol"> +            <xsl:call-template name="list.itemsymbol"> +              <xsl:with-param name="node" select="parent::itemizedlist"/> +            </xsl:call-template> +          </xsl:with-param> +        </xsl:call-template> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <xsl:choose> +        <!-- * work around broken passivetex list-item-body rendering --> +        <xsl:when test="$passivetex.extensions = '1'"> +          <xsl:apply-templates/> +        </xsl:when> +        <xsl:otherwise> +          <fo:block> +            <xsl:apply-templates/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </fo:list-item-body> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*/@spacing = 'compact'"> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="itemizedlist.label.markup"> +  <xsl:param name="itemsymbol" select="'disc'"/> + +  <xsl:choose> +    <xsl:when test="$itemsymbol='none'"></xsl:when> +    <xsl:when test="$itemsymbol='disc'">•</xsl:when> +    <xsl:when test="$itemsymbol='bullet'">•</xsl:when> +    <xsl:when test="$itemsymbol='endash'">–</xsl:when> +    <xsl:when test="$itemsymbol='emdash'">—</xsl:when> +    <!-- Some of these may work in your XSL-FO processor and fonts --> +    <!-- +    <xsl:when test="$itemsymbol='square'">■</xsl:when> +    <xsl:when test="$itemsymbol='box'">■</xsl:when> +    <xsl:when test="$itemsymbol='smallblacksquare'">▪</xsl:when> +    <xsl:when test="$itemsymbol='circle'">○</xsl:when> +    <xsl:when test="$itemsymbol='opencircle'">○</xsl:when> +    <xsl:when test="$itemsymbol='whitesquare'">□</xsl:when> +    <xsl:when test="$itemsymbol='smallwhitesquare'">▫</xsl:when> +    <xsl:when test="$itemsymbol='round'">●</xsl:when> +    <xsl:when test="$itemsymbol='blackcircle'">●</xsl:when> +    <xsl:when test="$itemsymbol='whitebullet'">◦</xsl:when> +    <xsl:when test="$itemsymbol='triangle'">‣</xsl:when> +    <xsl:when test="$itemsymbol='point'">›</xsl:when> +    <xsl:when test="$itemsymbol='hand'"><fo:inline  +                         font-family="Wingdings 2">A</fo:inline></xsl:when> +    --> +    <xsl:otherwise>•</xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="orderedlist"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="pi-label-width"> +    <xsl:call-template name="pi.dbfo_label-width"/> +  </xsl:variable> + +  <xsl:variable name="label-width"> +    <xsl:choose> +      <xsl:when test="$pi-label-width = ''"> +	<xsl:value-of select="$orderedlist.label.width"/> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="$pi-label-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +      select="*[not(self::listitem +                or self::title +                or self::titleabbrev)] +              |comment()[not(preceding-sibling::listitem)] +              |processing-instruction()[not(preceding-sibling::listitem)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates  +          select="listitem +                  |comment()[preceding-sibling::listitem] +                  |processing-instruction()[preceding-sibling::listitem]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="orderedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing orderedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="orderedlist/listitem" mode="item-number"> +  <xsl:variable name="numeration"> +    <xsl:call-template name="list.numeration"> +      <xsl:with-param name="node" select="parent::orderedlist"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:choose> +      <xsl:when test="$numeration='arabic'">1.</xsl:when> +      <xsl:when test="$numeration='loweralpha'">a.</xsl:when> +      <xsl:when test="$numeration='lowerroman'">i.</xsl:when> +      <xsl:when test="$numeration='upperalpha'">A.</xsl:when> +      <xsl:when test="$numeration='upperroman'">I.</xsl:when> +      <!-- What!? This should never happen --> +      <xsl:otherwise> +        <xsl:message> +          <xsl:text>Unexpected numeration: </xsl:text> +          <xsl:value-of select="$numeration"/> +        </xsl:message> +        <xsl:value-of select="1."/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="item-number"> +    <xsl:call-template name="orderedlist-item-number"/> +  </xsl:variable> + +  <xsl:if test="parent::orderedlist/@inheritnum='inherit' +                and ancestor::listitem[parent::orderedlist]"> +    <xsl:apply-templates select="ancestor::listitem[parent::orderedlist][1]" +                         mode="item-number"/> +  </xsl:if> + +  <xsl:number value="$item-number" format="{$type}"/> +</xsl:template> + +<xsl:template match="orderedlist/listitem"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="item.contents"> +    <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="orderedlist.label.properties"> +      <fo:block> +        <xsl:apply-templates select="." mode="item-number"/> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*/@spacing = 'compact'"> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="listitem/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara'] +                     |glossdef/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara'] +                     |step/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara'] +                     |callout/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara']" +              priority="2"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="variablelist"> +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_list-presentation"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$presentation = 'list'"> +      <xsl:apply-templates select="." mode="vl.as.list"/> +    </xsl:when> +    <xsl:when test="$presentation = 'blocks'"> +      <xsl:apply-templates select="." mode="vl.as.blocks"/> +    </xsl:when> +    <xsl:when test="$variablelist.as.blocks != 0"> +      <xsl:apply-templates select="." mode="vl.as.blocks"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="." mode="vl.as.list"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="variablelist" mode="vl.as.list"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="term-width"> +    <xsl:call-template name="pi.dbfo_term-width"/> +  </xsl:variable> + +  <xsl:variable name="termlength"> +    <xsl:choose> +      <xsl:when test="$term-width != ''"> +        <xsl:value-of select="$term-width"/> +      </xsl:when> +      <xsl:when test="@termlength"> +        <xsl:variable name="termlength.is.number"> +          <xsl:value-of select="@termlength + 0"/> +        </xsl:variable> +        <xsl:choose> +          <xsl:when test="string($termlength.is.number) = 'NaN'"> +            <!-- if the term length isn't just a number, assume it's a measurement --> +            <xsl:value-of select="@termlength"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="@termlength"/> +            <xsl:choose> +              <!-- workaround for passivetex lack of support for non-constant expressions --> +              <xsl:when test="$passivetex.extensions != 0"> +                <xsl:text>em</xsl:text> +              </xsl:when> +              <xsl:otherwise> +                <xsl:text>em * 0.60</xsl:text> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="longest.term"> +          <xsl:with-param name="terms" select="varlistentry/term"/> +          <xsl:with-param name="maxlength" select="$variablelist.max.termlength"/> +        </xsl:call-template> +        <xsl:choose> +          <!-- workaround for passivetex lack of support for non-constant expressions --> +          <xsl:when test="$passivetex.extensions != 0"> +            <xsl:text>em</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:text>em * 0.60</xsl:text> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +<!-- +  <xsl:message> +    <xsl:text>term width: </xsl:text> +    <xsl:value-of select="$termlength"/> +  </xsl:message> +--> + +  <xsl:variable name="label-separation">1em</xsl:variable> +  <xsl:variable name="distance-between-starts"> +    <xsl:choose> +      <!-- workaround for passivetex lack of support for non-constant expressions --> +      <xsl:when test="$passivetex.extensions != 0"> +        <xsl:value-of select="$termlength"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$termlength"/> +        <xsl:text>+</xsl:text> +        <xsl:value-of select="$label-separation"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +    select="*[not(self::varlistentry +              or self::title +              or self::titleabbrev)] +            |comment()[not(preceding-sibling::varlistentry)] +            |processing-instruction()[not(preceding-sibling::varlistentry)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates mode="vl.as.list" +      select="varlistentry +              |comment()[preceding-sibling::varlistentry] +              |processing-instruction()[preceding-sibling::varlistentry]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:list-block id="{$id}" +                     provisional-distance-between-starts= +                        "{$distance-between-starts}" +                     provisional-label-separation="{$label-separation}"> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block id="{$id}" +                     provisional-distance-between-starts= +                        "{$distance-between-starts}" +                     provisional-label-separation="{$label-separation}" +                     xsl:use-attribute-sets="list.block.spacing"> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="longest.term"> +  <xsl:param name="longest" select="0"/> +  <xsl:param name="terms" select="."/> +  <xsl:param name="maxlength" select="-1"/> + +  <!-- Process out any indexterms in the term --> +  <xsl:variable name="term.text"> +    <xsl:apply-templates select="$terms[1]"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$longest > $maxlength and $maxlength > 0"> +      <xsl:value-of select="$maxlength"/> +    </xsl:when> +    <xsl:when test="not($terms)"> +      <xsl:value-of select="$longest"/> +    </xsl:when> +    <xsl:when test="string-length($term.text) > $longest"> +      <xsl:call-template name="longest.term"> +        <xsl:with-param name="longest"  +            select="string-length($term.text)"/> +        <xsl:with-param name="maxlength" select="$maxlength"/> +        <xsl:with-param name="terms" select="$terms[position() > 1]"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="longest.term"> +        <xsl:with-param name="longest" select="$longest"/> +        <xsl:with-param name="maxlength" select="$maxlength"/> +        <xsl:with-param name="terms" select="$terms[position() > 1]"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varlistentry" mode="vl.as.list"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="item.contents"> +    <fo:list-item-label end-indent="label-end()" text-align="start"> +      <fo:block> +        <xsl:apply-templates select="term"/> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates select="listitem"/> +      </fo:block> +    </fo:list-item-body> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*/@spacing = 'compact'"> +      <fo:list-item id="{$id}" +          xsl:use-attribute-sets="compact.list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + + +<xsl:template match="variablelist" mode="vl.as.blocks"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <!-- termlength is irrelevant --> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +    select="*[not(self::varlistentry +              or self::title +              or self::titleabbrev)] +            |comment()[not(preceding-sibling::varlistentry)] +            |processing-instruction()[not(preceding-sibling::varlistentry)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates mode="vl.as.blocks" +      select="varlistentry +              |comment()[preceding-sibling::varlistentry] +              |processing-instruction()[preceding-sibling::varlistentry]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:block id="{$id}"> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" xsl:use-attribute-sets="list.block.spacing"> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varlistentry" mode="vl.as.blocks"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing"   +      keep-together.within-column="always"  +      keep-with-next.within-column="always"> +    <xsl:apply-templates select="term"/> +  </fo:block> + +  <fo:block margin-left="0.25in"> +    <xsl:apply-templates select="listitem"/> +  </fo:block> +</xsl:template> + +<xsl:template match="varlistentry/term"> +  <fo:inline> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </fo:inline> +  <xsl:choose> +    <xsl:when test="not(following-sibling::term)"/> <!-- do nothing --> +    <xsl:otherwise> +      <!-- * if we have multiple terms in the same varlistentry, generate --> +      <!-- * a separator (", " by default) and/or an additional line --> +      <!-- * break after each one except the last --> +      <fo:inline><xsl:value-of select="$variablelist.term.separator"/></fo:inline> +      <xsl:if test="not($variablelist.term.break.after = '0')"> +        <fo:block/> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varlistentry/listitem"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="title" mode="list.title.mode"> +  <xsl:call-template name="formal.object.heading"> +    <xsl:with-param name="object" select=".."/> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="simplelist|simplelist[@type='vert']"> +  <!-- with no type specified, the default is 'vert' --> + +  <xsl:variable name="explicit.table.width"> +    <xsl:call-template name="dbfo-attribute"> +      <xsl:with-param name="pis" +		      select="processing-instruction('dbfo')"/> +      <xsl:with-param name="attribute" select="'list-width'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="table.width"> +    <xsl:choose> +      <xsl:when test="$explicit.table.width != ''"> +        <xsl:value-of select="$explicit.table.width"/> +      </xsl:when> +      <xsl:when test="$default.table.width = ''"> +        <xsl:text>100%</xsl:text> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$default.table.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:table xsl:use-attribute-sets="normal.para.spacing"> + +    <xsl:choose> +      <xsl:when test="$axf.extensions != 0 or $xep.extensions != 0"> +	<xsl:attribute name="table-layout">auto</xsl:attribute> +        <xsl:if test="$explicit.table.width != ''"> +          <xsl:attribute name="width"><xsl:value-of  +	  select="$explicit.table.width"/></xsl:attribute> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="table-layout">fixed</xsl:attribute> +        <xsl:attribute name="width"><xsl:value-of  +                                      select="$table.width"/></xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:call-template name="simplelist.table.columns"> +      <xsl:with-param name="cols"> +        <xsl:choose> +          <xsl:when test="@columns"> +            <xsl:value-of select="@columns"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <xsl:call-template name="simplelist.vert"> +        <xsl:with-param name="cols"> +          <xsl:choose> +            <xsl:when test="@columns"> +              <xsl:value-of select="@columns"/> +            </xsl:when> +            <xsl:otherwise>1</xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +      </xsl:call-template> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template match="simplelist[@type='inline']"> +  <!-- if dbchoice PI exists, use that to determine the choice separator --> +  <!-- (that is, equivalent of "and" or "or" in current locale), or literal --> +  <!-- value of "choice" otherwise --> +  <fo:inline><xsl:variable name="localized-choice-separator"> +    <xsl:choose> +      <xsl:when test="processing-instruction('dbchoice')"> +        <xsl:call-template name="select.choice.separator"/> +      </xsl:when> +      <xsl:otherwise> +        <!-- empty --> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:for-each select="member"> +    <xsl:apply-templates/> +    <xsl:choose> +      <xsl:when test="position() = last()"/> <!-- do nothing --> +      <xsl:otherwise> +	<xsl:text>, </xsl:text> +	<xsl:if test="position() = last() - 1"> +	  <xsl:if test="$localized-choice-separator != ''"> +	    <xsl:value-of select="$localized-choice-separator"/> +	    <xsl:text> </xsl:text> +	  </xsl:if> +	</xsl:if> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:for-each></fo:inline> +</xsl:template> + +<xsl:template match="simplelist[@type='horiz']"> + +  <xsl:variable name="explicit.table.width"> +    <xsl:call-template name="pi.dbfo_list-width"/> +  </xsl:variable> + +  <xsl:variable name="table.width"> +    <xsl:choose> +      <xsl:when test="$explicit.table.width != ''"> +        <xsl:value-of select="$explicit.table.width"/> +      </xsl:when> +      <xsl:when test="$default.table.width = ''"> +        <xsl:text>100%</xsl:text> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$default.table.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:table xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:choose> +      <xsl:when test="$axf.extensions != 0 or $xep.extensions != 0"> +        <xsl:attribute name="table-layout">auto</xsl:attribute> +        <xsl:if test="$explicit.table.width != ''"> +          <xsl:attribute name="width"><xsl:value-of  +                             select="$explicit.table.width"/></xsl:attribute> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="table-layout">fixed</xsl:attribute> +        <xsl:attribute name="width"><xsl:value-of  +                                      select="$table.width"/></xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:call-template name="simplelist.table.columns"> +      <xsl:with-param name="cols"> +        <xsl:choose> +          <xsl:when test="@columns"> +            <xsl:value-of select="@columns"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <xsl:call-template name="simplelist.horiz"> +        <xsl:with-param name="cols"> +          <xsl:choose> +            <xsl:when test="@columns"> +              <xsl:value-of select="@columns"/> +            </xsl:when> +            <xsl:otherwise>1</xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +      </xsl:call-template> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template name="simplelist.table.columns"> +  <xsl:param name="cols" select="1"/> +  <xsl:param name="curcol" select="1"/> +  <fo:table-column column-number="{$curcol}" +                   column-width="proportional-column-width(1)"/> +  <xsl:if test="$curcol < $cols"> +    <xsl:call-template name="simplelist.table.columns"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="curcol" select="$curcol + 1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.horiz"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> + +  <xsl:if test="$cell <= count($members)"> +    <fo:table-row> +      <xsl:call-template name="simplelist.horiz.row"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="cell" select="$cell"/> +        <xsl:with-param name="members" select="$members"/> +      </xsl:call-template> +   </fo:table-row> +    <xsl:call-template name="simplelist.horiz"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell + $cols"/> +      <xsl:with-param name="members" select="$members"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.horiz.row"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="curcol">1</xsl:param> + +  <xsl:if test="$curcol <= $cols"> +    <fo:table-cell> +      <fo:block> +        <xsl:if test="$members[position()=$cell]"> +          <xsl:apply-templates select="$members[position()=$cell]"/> +        </xsl:if> +      </fo:block> +    </fo:table-cell> +    <xsl:call-template name="simplelist.horiz.row"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell+1"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="curcol" select="$curcol+1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.vert"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="rows" +             select="floor((count($members)+$cols - 1) div $cols)"/> + +  <xsl:if test="$cell <= $rows"> +    <fo:table-row> +      <xsl:call-template name="simplelist.vert.row"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="rows" select="$rows"/> +        <xsl:with-param name="cell" select="$cell"/> +        <xsl:with-param name="members" select="$members"/> +      </xsl:call-template> +   </fo:table-row> +    <xsl:call-template name="simplelist.vert"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell+1"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="rows" select="$rows"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.vert.row"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="rows">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="curcol">1</xsl:param> + +  <xsl:if test="$curcol <= $cols"> +    <fo:table-cell> +      <fo:block> +        <xsl:if test="$members[position()=$cell]"> +          <xsl:apply-templates select="$members[position()=$cell]"/> +        </xsl:if> +      </fo:block> +    </fo:table-cell> +    <xsl:call-template name="simplelist.vert.row"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="rows" select="$rows"/> +      <xsl:with-param name="cell" select="$cell+$rows"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="curcol" select="$curcol+1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template match="member"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="procedure"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="param.placement" +                select="substring-after(normalize-space($formal.title.placement), +                                        concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Preserve order of PIs and comments --> +  <xsl:variable name="preamble" +        select="*[not(self::step +                  or self::title +                  or self::titleabbrev)] +                |comment()[not(preceding-sibling::step)] +                |processing-instruction()[not(preceding-sibling::step)]"/> + +  <xsl:variable name="steps"  +                select="step +                        |comment()[preceding-sibling::step] +                        |processing-instruction()[preceding-sibling::step]"/> + +  <fo:block id="{$id}" xsl:use-attribute-sets="procedure.properties list.block.spacing"> +    <xsl:if test="./title and $placement = 'before'"> +      <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" --> +      <!-- heading even though we called formal.object.heading. odd but true. --> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <xsl:apply-templates select="$preamble"/> + +    <fo:list-block xsl:use-attribute-sets="list.block.spacing" +                   provisional-distance-between-starts="2em" +                   provisional-label-separation="0.2em"> +      <xsl:apply-templates select="$steps"/> +    </fo:list-block> + +    <xsl:if test="./title and $placement != 'before'"> +      <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" --> +      <!-- heading even though we called formal.object.heading. odd but true. --> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="procedure/title"> +</xsl:template> + +<xsl:template match="substeps"> +  <fo:list-block xsl:use-attribute-sets="list.block.spacing" +                 provisional-distance-between-starts="2em" +                 provisional-label-separation="0.2em"> +    <xsl:apply-templates/> +  </fo:list-block> +</xsl:template> + +<xsl:template match="procedure/step|substeps/step"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:list-item xsl:use-attribute-sets="list.item.spacing"> +    <fo:list-item-label end-indent="label-end()"> +      <fo:block id="{$id}"> +        <!-- dwc: fix for one step procedures. Use a bullet if there's no step 2 --> +        <xsl:choose> +          <xsl:when test="count(../step) = 1"> +            <xsl:text>•</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="." mode="number"> +              <xsl:with-param name="recursive" select="0"/> +            </xsl:apply-templates>. +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="stepalternatives"> +  <fo:list-block provisional-distance-between-starts="2em" +                 provisional-label-separation="0.2em"> +    <xsl:apply-templates select="step"/> +  </fo:list-block> +</xsl:template> + +<xsl:template match="stepalternatives/step"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:list-item xsl:use-attribute-sets="list.item.spacing"> +    <fo:list-item-label end-indent="label-end()"> +      <fo:block id="{$id}"> +        <xsl:text>•</xsl:text> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="step/title"> +  <fo:block font-weight="bold" +            keep-together.within-column="always"  +            keep-with-next.within-column="always"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="segmentedlist"> +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_list-presentation"/> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$presentation = 'table'"> +      <fo:block id="{$id}"> +        <xsl:apply-templates select="." mode="seglist-table"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="$presentation = 'list'"> +      <fo:block id="{$id}"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="$segmentedlist.as.table != 0"> +      <fo:block id="{$id}"> +        <xsl:apply-templates select="." mode="seglist-table"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="segmentedlist/title"> +  <xsl:apply-templates select="." mode="list.title.mode" /> +</xsl:template> + +<xsl:template match="segtitle"> +</xsl:template> + +<xsl:template match="segtitle" mode="segtitle-in-seg"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="seglistitem"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:block id="{$id}"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="seg"> +  <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/> +  <xsl:variable name="seglist" select="ancestor::segmentedlist"/> +  <xsl:variable name="segtitles" select="$seglist/segtitle"/> + +  <!-- +     Note: segtitle is only going to be the right thing in a well formed +     SegmentedList.  If there are too many Segs or too few SegTitles, +     you'll get something odd...maybe an error +  --> + +  <fo:block> +    <fo:inline font-weight="bold"> +      <xsl:apply-templates select="$segtitles[$segnum=position()]" +                           mode="segtitle-in-seg"/> +      <xsl:text>: </xsl:text> +    </fo:inline> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="segmentedlist" mode="seglist-table"> +  <xsl:apply-templates select="title" mode="list.title.mode" /> +  <fo:table> +    <fo:table-column column-number="1" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="2" column-width="proportional-column-width(1)"/> +    <fo:table-header start-indent="0pt" end-indent="0pt"> +      <fo:table-row> +        <xsl:apply-templates select="segtitle" mode="seglist-table"/> +      </fo:table-row> +    </fo:table-header> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <xsl:apply-templates select="seglistitem" mode="seglist-table"/> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template match="segtitle" mode="seglist-table"> +  <fo:table-cell> +    <fo:block font-weight="bold"> +      <xsl:apply-templates/> +    </fo:block> +  </fo:table-cell> +</xsl:template> + +<xsl:template match="seglistitem" mode="seglist-table"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:table-row id="{$id}"> +    <xsl:apply-templates mode="seglist-table"/> +  </fo:table-row> +</xsl:template> + +<xsl:template match="seg" mode="seglist-table"> +  <fo:table-cell> +    <fo:block> +      <xsl:apply-templates/> +    </fo:block> +  </fo:table-cell> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="calloutlist"> +  <xsl:variable name="id"> +  <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}" +            text-align="{$alignment}"> +    <!-- The above restores alignment altered by image align attribute --> +    <xsl:if test="title|info/title"> +      <xsl:apply-templates select="(title|info/title)[1]"  +                           mode="list.title.mode"/> +    </xsl:if> + +    <!-- Preserve order of PIs and comments --> +    <xsl:apply-templates  +         select="*[not(self::callout or self::title or self::titleabbrev)] +                   |comment()[not(preceding-sibling::callout)] +                   |processing-instruction()[not(preceding-sibling::callout)]"/> + +    <fo:list-block space-before.optimum="1em" +                   space-before.minimum="0.8em" +                   space-before.maximum="1.2em" +                   provisional-distance-between-starts="2.2em" +                   provisional-label-separation="0.2em"> +      <xsl:apply-templates select="callout +                                |comment()[preceding-sibling::callout] +                                |processing-instruction()[preceding-sibling::callout]"/> +    </fo:list-block> +  </fo:block> +</xsl:template> + +<xsl:template match="calloutlist/title"> +</xsl:template> + +<xsl:template match="callout"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> +  <fo:list-item id="{$id}"> +    <fo:list-item-label end-indent="label-end()"> +      <fo:block> +        <xsl:call-template name="callout.arearefs"> +          <xsl:with-param name="arearefs" select="@arearefs"/> +        </xsl:call-template> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template name="callout.arearefs"> +  <xsl:param name="arearefs"></xsl:param> +  <xsl:if test="$arearefs!=''"> +    <xsl:choose> +      <xsl:when test="substring-before($arearefs,' ')=''"> +        <xsl:call-template name="callout.arearef"> +          <xsl:with-param name="arearef" select="$arearefs"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="callout.arearef"> +          <xsl:with-param name="arearef" +                          select="substring-before($arearefs,' ')"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:call-template name="callout.arearefs"> +      <xsl:with-param name="arearefs" +                      select="substring-after($arearefs,' ')"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="callout.arearef"> +  <xsl:param name="arearef"></xsl:param> +  <xsl:variable name="targets" select="key('id',$arearef)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:choose> +    <xsl:when test="count($target)=0"> +      <xsl:value-of select="$arearef"/> +      <xsl:text>: ???</xsl:text> +    </xsl:when> +    <xsl:when test="local-name($target)='co'"> +      <xsl:apply-templates select="$target" mode="callout-bug"/> +    </xsl:when> +    <xsl:when test="local-name($target)='areaset'"> +      <xsl:call-template name="callout-bug"> +        <xsl:with-param name="conum"> +          <xsl:apply-templates select="$target" mode="conumber"/> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="local-name($target)='area'"> +      <xsl:choose> +        <xsl:when test="$target/parent::areaset"> +          <xsl:call-template name="callout-bug"> +            <xsl:with-param name="conum"> +              <xsl:apply-templates select="$target/parent::areaset" +                                   mode="conumber"/> +            </xsl:with-param> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="callout-bug"> +            <xsl:with-param name="conum"> +              <xsl:apply-templates select="$target" mode="conumber"/> +            </xsl:with-param> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>???</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="orderedlist-starting-number"> +  <xsl:param name="list" select="."/> +  <xsl:variable name="pi-start"> +    <xsl:call-template name="pi.dbfo_start"> +      <xsl:with-param name="node" select="$list"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:call-template name="output-orderedlist-starting-number"> +    <xsl:with-param name="list" select="$list"/> +    <xsl:with-param name="pi-start" select="$pi-start"/> +  </xsl:call-template> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/math.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/math.xsl.svn-base new file mode 100644 index 0000000..77ec2d5 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/math.xsl.svn-base @@ -0,0 +1,128 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:mml="http://www.w3.org/1998/Math/MathML" +                exclude-result-prefixes="mml" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:template match="inlineequation"> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0 and $tex.math.in.alt != ''"> +      <xsl:apply-templates select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']"> +        <xsl:with-param name="output.delims"> +          <xsl:call-template name="tex.math.output.delims"/> +        </xsl:with-param> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="alt"> +</xsl:template> + +<xsl:template match="mathphrase"> +  <fo:inline> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<!-- "Support" for MathML --> + +<xsl:template match="mml:math" xmlns:mml="http://www.w3.org/1998/Math/MathML"> +  <fo:instream-foreign-object> +    <xsl:copy> +      <xsl:copy-of select="@*"/> +      <xsl:apply-templates/> +    </xsl:copy> +  </fo:instream-foreign-object> +</xsl:template> + +<xsl:template match="mml:*" xmlns:mml="http://www.w3.org/1998/Math/MathML"> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:apply-templates/> +  </xsl:copy> +</xsl:template> + +<xsl:template match="equation/graphic | informalequation/graphic"> +  <xsl:if test="$passivetex.extensions = 0 or $tex.math.in.alt = ''"> +    <fo:block> +      <xsl:call-template name="process.image"/> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="inlineequation/alt[@role='tex'] |  +                     inlineequation/inlinemediaobject/textobject[@role='tex']" priority="1"> +  <xsl:param name="output.delims" select="1"/> +  <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''"> +    <xsl:processing-instruction name="xmltex"> +      <xsl:if test="$output.delims != 0"> +        <xsl:text>$</xsl:text> +      </xsl:if> +      <xsl:value-of select="."/> +      <xsl:if test="$output.delims != 0"> +        <xsl:text>$</xsl:text> +      </xsl:if> +    </xsl:processing-instruction> +  </xsl:if> +</xsl:template> + +<xsl:template match="equation/alt[@role='tex'] | informalequation/alt[@role='tex'] | +                     equation/mediaobject/textobject[@role='tex'] | +                     informalequation/mediaobject/textobject[@role='tex']" priority="1"> +  <xsl:variable name="output.delims"> +    <xsl:call-template name="tex.math.output.delims"/> +  </xsl:variable> +  <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''"> +    <xsl:processing-instruction name="xmltex"> +      <xsl:if test="$output.delims != 0"> +        <xsl:text>$$</xsl:text> +      </xsl:if> +      <xsl:value-of select="."/> +      <xsl:if test="$output.delims != 0"> +        <xsl:text>$$</xsl:text> +      </xsl:if> +    </xsl:processing-instruction> +  </xsl:if> +</xsl:template> + +<xsl:template match="alt[@role='tex']"> +  <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''"> +    <xsl:message> +      Your equation is misplaced. It should be in inlineequation, equation or informalequation. +    </xsl:message> +  </xsl:if> +</xsl:template> + +<xsl:template name="tex.math.output.delims"> +  <xsl:variable name="pi.delims"> +    <xsl:call-template name="pi-attribute"> +      <xsl:with-param name="pis" select=".//processing-instruction('dbtex')"/> +      <xsl:with-param name="attribute" select="'delims'"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:variable name="result"> +    <xsl:choose> +      <xsl:when test="$pi.delims = 'no'">0</xsl:when> +      <xsl:when test="$pi.delims = '' and $tex.math.delims = 0">0</xsl:when> +      <xsl:otherwise>1</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:value-of select="$result"/> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/pagesetup.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/pagesetup.xsl.svn-base new file mode 100644 index 0000000..798a937 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/pagesetup.xsl.svn-base @@ -0,0 +1,2314 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version="1.0"> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:param name="body.fontset"> +  <xsl:value-of select="$body.font.family"/> +  <xsl:if test="$body.font.family != '' +                and $symbol.font.family  != ''">,</xsl:if> +    <xsl:value-of select="$symbol.font.family"/> +</xsl:param> + +<xsl:param name="title.fontset"> +  <xsl:value-of select="$title.font.family"/> +  <xsl:if test="$title.font.family != '' +                and $symbol.font.family  != ''">,</xsl:if> +    <xsl:value-of select="$symbol.font.family"/> +</xsl:param> + +<!-- PassiveTeX can't handle the math expression for +     title.margin.left being negative, so ignore it. +     margin-left="{$page.margin.outer} - {$title.margin.left}" +--> +<xsl:param name="margin.left.outer"> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0"> +      <xsl:value-of select="$page.margin.outer"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$page.margin.outer"/> +      <xsl:text> - </xsl:text> +      <xsl:value-of select="$title.margin.left"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:param name="margin.left.inner"> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0"> +      <xsl:value-of select="$page.margin.inner"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$page.margin.inner"/> +      <xsl:text> - </xsl:text> +      <xsl:value-of select="$title.margin.left"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:template name="setup.pagemasters"> +  <fo:layout-master-set> +    <!-- blank pages --> +    <fo:simple-page-master master-name="blank" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">blank</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body display-align="center" +                      margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}"> +        <xsl:if test="$fop.extensions = 0 and $fop1.extensions = 0"> +          <xsl:attribute name="region-name">blank-body</xsl:attribute> +        </xsl:if> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-blank" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-blank" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <!-- title pages --> +    <fo:simple-page-master master-name="titlepage-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">titlepage-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.titlepage}" +                      column-count="{$column.count.titlepage}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="titlepage-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">titlepage-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.titlepage}" +                      column-count="{$column.count.titlepage}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="titlepage-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">titlepage-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.titlepage}" +                      column-count="{$column.count.titlepage}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <!-- list-of-title pages --> +    <fo:simple-page-master master-name="lot-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">lot-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.lot}" +                      column-count="{$column.count.lot}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="lot-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">lot-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.lot}" +                      column-count="{$column.count.lot}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="lot-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">lot-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.lot}" +                      column-count="{$column.count.lot}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <!-- frontmatter pages --> +    <fo:simple-page-master master-name="front-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">front-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.front}" +                      column-count="{$column.count.front}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="front-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">front-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.front}" +                      column-count="{$column.count.front}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="front-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">front-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.front}" +                      column-count="{$column.count.front}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <!-- body pages --> +    <fo:simple-page-master master-name="body-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">body-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.body}" +                      column-count="{$column.count.body}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="body-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">body-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.body}" +                      column-count="{$column.count.body}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="body-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">body-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.body}" +                      column-count="{$column.count.body}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <!-- backmatter pages --> +    <fo:simple-page-master master-name="back-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">back-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.back}" +                      column-count="{$column.count.back}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="back-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">back-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.back}" +                      column-count="{$column.count.back}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="back-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">back-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.back}" +                      column-count="{$column.count.back}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <!-- index pages --> +    <fo:simple-page-master master-name="index-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$page.margin.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">index-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.index}" +                      column-count="{$column.count.index}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="index-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$page.margin.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">index-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.index}" +                      column-count="{$column.count.index}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="index-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$page.margin.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">index-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.index}" +                      column-count="{$column.count.index}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <xsl:if test="$draft.mode != 'no'"> +      <!-- draft blank pages --> +      <fo:simple-page-master master-name="blank-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">blank-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-blank" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-blank" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft title pages --> +      <fo:simple-page-master master-name="titlepage-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">titlepage-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.titlepage}" +                        column-count="{$column.count.titlepage}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="titlepage-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">titlepage-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.titlepage}" +                        column-count="{$column.count.titlepage}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="titlepage-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">titlepage-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.titlepage}" +                        column-count="{$column.count.titlepage}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft list-of-title pages --> +      <fo:simple-page-master master-name="lot-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">lot-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.lot}" +                        column-count="{$column.count.lot}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="lot-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">lot-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.lot}" +                        column-count="{$column.count.lot}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="lot-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">lot-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.lot}" +                        column-count="{$column.count.lot}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft frontmatter pages --> +      <fo:simple-page-master master-name="front-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">front-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.front}" +                        column-count="{$column.count.front}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="front-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">front-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.front}" +                        column-count="{$column.count.front}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="front-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">front-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.front}" +                        column-count="{$column.count.front}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft body pages --> +      <fo:simple-page-master master-name="body-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">body-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.body}" +                        column-count="{$column.count.body}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="body-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">body-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.body}" +                        column-count="{$column.count.body}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="body-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">body-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.body}" +                        column-count="{$column.count.body}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft backmatter pages --> +      <fo:simple-page-master master-name="back-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">back-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.back}" +                        column-count="{$column.count.back}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="back-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">back-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.back}" +                        column-count="{$column.count.back}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="back-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">back-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.back}" +                        column-count="{$column.count.back}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft index pages --> +      <fo:simple-page-master master-name="index-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$page.margin.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">index-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.index}" +                        column-count="{$column.count.index}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="index-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$page.margin.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">index-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.index}" +                        column-count="{$column.count.index}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="index-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-right="{$page.margin.inner}" +                             margin-left="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">index-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.index}" +                        column-count="{$column.count.index}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> +    </xsl:if> + +    <!-- setup for title page(s) --> +    <fo:page-sequence-master master-name="titlepage"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="titlepage-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="titlepage-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">titlepage-even</xsl:when> +              <xsl:otherwise>titlepage-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <!-- setup for lots --> +    <fo:page-sequence-master master-name="lot"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="lot-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="lot-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">lot-even</xsl:when> +              <xsl:otherwise>lot-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <!-- setup front matter --> +    <fo:page-sequence-master master-name="front"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="front-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="front-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">front-even</xsl:when> +              <xsl:otherwise>front-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <!-- setup for body pages --> +    <fo:page-sequence-master master-name="body"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="body-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="body-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">body-even</xsl:when> +              <xsl:otherwise>body-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <!-- setup back matter --> +    <fo:page-sequence-master master-name="back"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="back-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="back-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">back-even</xsl:when> +              <xsl:otherwise>back-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <!-- setup back matter --> +    <fo:page-sequence-master master-name="index"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="index-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="index-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">index-even</xsl:when> +              <xsl:otherwise>index-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <xsl:if test="$draft.mode != 'no'"> +      <!-- setup for draft title page(s) --> +      <fo:page-sequence-master master-name="titlepage-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="titlepage-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="titlepage-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">titlepage-even-draft</xsl:when> +                <xsl:otherwise>titlepage-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> + +      <!-- setup for draft lots --> +      <fo:page-sequence-master master-name="lot-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="lot-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="lot-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">lot-even-draft</xsl:when> +                <xsl:otherwise>lot-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> + +      <!-- setup draft front matter --> +      <fo:page-sequence-master master-name="front-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="front-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="front-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">front-even-draft</xsl:when> +                <xsl:otherwise>front-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> + +      <!-- setup for draft body pages --> +      <fo:page-sequence-master master-name="body-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="body-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="body-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">body-even-draft</xsl:when> +                <xsl:otherwise>body-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> + +      <!-- setup draft back matter --> +      <fo:page-sequence-master master-name="back-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="back-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="back-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">back-even-draft</xsl:when> +                <xsl:otherwise>back-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> + +      <!-- setup draft index pages --> +      <fo:page-sequence-master master-name="index-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="index-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="index-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">index-even-draft</xsl:when> +                <xsl:otherwise>index-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> +    </xsl:if> + +    <xsl:call-template name="user.pagemasters"/> + +    </fo:layout-master-set> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="user.pagemasters"/> <!-- intentionally empty --> + +<!-- ==================================================================== --> + +<xsl:template name="select.pagemaster"> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="pageclass" select="''"/> + +  <xsl:variable name="pagemaster"> +    <xsl:choose> +      <xsl:when test="$pageclass != ''"> +        <xsl:value-of select="$pageclass"/> +      </xsl:when> +      <xsl:when test="$pageclass = 'lot'">lot</xsl:when> +      <xsl:when test="$element = 'dedication'">front</xsl:when> +      <xsl:when test="$element = 'preface'">front</xsl:when> +      <xsl:when test="$element = 'appendix'">back</xsl:when> +      <xsl:when test="$element = 'glossary'">back</xsl:when> +      <xsl:when test="$element = 'bibliography'">back</xsl:when> +      <xsl:when test="$element = 'index'">index</xsl:when> +      <xsl:when test="$element = 'colophon'">back</xsl:when> +      <xsl:otherwise>body</xsl:otherwise> +    </xsl:choose> + +    <xsl:choose> +      <xsl:when test="$draft.mode = 'yes'"> +        <xsl:text>-draft</xsl:text> +      </xsl:when> +      <xsl:when test="$draft.mode = 'no'"> +        <!-- nop --> +      </xsl:when> +      <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'"> +        <xsl:text>-draft</xsl:text> +      </xsl:when> +      <xsl:otherwise> +        <!-- nop --> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:call-template name="select.user.pagemaster"> +    <xsl:with-param name="element" select="$element"/> +    <xsl:with-param name="pageclass" select="$pageclass"/> +    <xsl:with-param name="default-pagemaster" select="$pagemaster"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="select.user.pagemaster"> +  <xsl:param name="element"/> +  <xsl:param name="pageclass"/> +  <xsl:param name="default-pagemaster"/> + +  <!-- by default, return the default. But if you've created your own +       pagemasters in user.pagemasters, you might want to select one here. --> +  <xsl:value-of select="$default-pagemaster"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="head.sep.rule"> +  <xsl:param name="pageclass"/> +  <xsl:param name="sequence"/> +  <xsl:param name="gentext-key"/> + +  <xsl:if test="$header.rule != 0"> +    <xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute> +    <xsl:attribute name="border-bottom-style">solid</xsl:attribute> +    <xsl:attribute name="border-bottom-color">black</xsl:attribute> +  </xsl:if> +</xsl:template> + +<xsl:template name="foot.sep.rule"> +  <xsl:param name="pageclass"/> +  <xsl:param name="sequence"/> +  <xsl:param name="gentext-key"/> + +  <xsl:if test="$footer.rule != 0"> +    <xsl:attribute name="border-top-width">0.5pt</xsl:attribute> +    <xsl:attribute name="border-top-style">solid</xsl:attribute> +    <xsl:attribute name="border-top-color">black</xsl:attribute> +  </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="running.head.mode"> +  <xsl:param name="master-reference" select="'unknown'"/> +  <xsl:param name="gentext-key" select="local-name(.)"/> + +  <!-- remove -draft from reference --> +  <xsl:variable name="pageclass"> +    <xsl:choose> +      <xsl:when test="contains($master-reference, '-draft')"> +        <xsl:value-of select="substring-before($master-reference, '-draft')"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$master-reference"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:static-content flow-name="xsl-region-before-first"> +    <fo:block xsl:use-attribute-sets="header.content.properties"> +      <xsl:call-template name="header.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'first'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-before-odd"> +    <fo:block xsl:use-attribute-sets="header.content.properties"> +      <xsl:call-template name="header.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'odd'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-before-even"> +    <fo:block xsl:use-attribute-sets="header.content.properties"> +      <xsl:call-template name="header.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'even'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-before-blank"> +    <fo:block xsl:use-attribute-sets="header.content.properties"> +      <xsl:call-template name="header.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'blank'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <xsl:call-template name="footnote-separator"/> + +  <xsl:if test="$fop.extensions = 0 and $fop1.extensions = 0"> +    <xsl:call-template name="blank.page.content"/> +  </xsl:if> +</xsl:template> + +<xsl:template name="footnote-separator"> +  <fo:static-content flow-name="xsl-footnote-separator"> +    <fo:block> +      <fo:leader xsl:use-attribute-sets="footnote.sep.leader.properties"/> +    </fo:block> +  </fo:static-content> +</xsl:template> + +<xsl:template name="blank.page.content"> +  <fo:static-content flow-name="blank-body"> +    <fo:block text-align="center"/> +  </fo:static-content> +</xsl:template> + +<xsl:template name="header.table"> +  <xsl:param name="pageclass" select="''"/> +  <xsl:param name="sequence" select="''"/> +  <xsl:param name="gentext-key" select="''"/> + +  <!-- default is a single table style for all headers --> +  <!-- Customize it for different page classes or sequence location --> + +  <xsl:choose> +      <xsl:when test="$pageclass = 'index'"> +          <xsl:attribute name="margin-left">0pt</xsl:attribute> +      </xsl:when> +  </xsl:choose> + +  <xsl:variable name="column1"> +    <xsl:choose> +      <xsl:when test="$double.sided = 0">1</xsl:when> +      <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when> +      <xsl:otherwise>3</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="column3"> +    <xsl:choose> +      <xsl:when test="$double.sided = 0">3</xsl:when> +      <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when> +      <xsl:otherwise>1</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="candidate"> +    <fo:table xsl:use-attribute-sets="header.table.properties"> +      <xsl:call-template name="head.sep.rule"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="$sequence"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> + +      <fo:table-column column-number="1"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">header</xsl:with-param> +            <xsl:with-param name="position" select="$column1"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> +      <fo:table-column column-number="2"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">header</xsl:with-param> +            <xsl:with-param name="position" select="2"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> +      <fo:table-column column-number="3"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">header</xsl:with-param> +            <xsl:with-param name="position" select="$column3"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> + +      <fo:table-body> +        <fo:table-row> +          <xsl:attribute name="block-progression-dimension.minimum"> +            <xsl:value-of select="$header.table.height"/> +          </xsl:attribute> +          <fo:table-cell text-align="left" +                         display-align="before"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="header.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'left'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +          <fo:table-cell text-align="center" +                         display-align="before"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="header.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'center'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +          <fo:table-cell text-align="right" +                         display-align="before"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="header.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'right'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +        </fo:table-row> +      </fo:table-body> +    </fo:table> +  </xsl:variable> + +  <!-- Really output a header? --> +  <xsl:choose> +    <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book' +                    and $sequence='first'"> +      <!-- no, book titlepages have no headers at all --> +    </xsl:when> +    <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0"> +      <!-- no output --> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$candidate"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="header.content"> +  <xsl:param name="pageclass" select="''"/> +  <xsl:param name="sequence" select="''"/> +  <xsl:param name="position" select="''"/> +  <xsl:param name="gentext-key" select="''"/> + +<!-- +  <fo:block> +    <xsl:value-of select="$pageclass"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$sequence"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$position"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$gentext-key"/> +  </fo:block> +--> + +  <fo:block> + +    <!-- sequence can be odd, even, first, blank --> +    <!-- position can be left, center, right --> +    <xsl:choose> +      <xsl:when test="$sequence = 'blank'"> +        <!-- nothing --> +      </xsl:when> + +      <xsl:when test="$position='left'"> +        <!-- Same for odd, even, empty, and blank sequences --> +        <xsl:call-template name="draft.text"/> +      </xsl:when> + +      <xsl:when test="($sequence='odd' or $sequence='even') and $position='center'"> +        <xsl:if test="$pageclass != 'titlepage'"> +          <xsl:choose> +            <xsl:when test="ancestor::book and ($double.sided != 0)"> +              <fo:retrieve-marker retrieve-class-name="section.head.marker" +                                  retrieve-position="first-including-carryover" +                                  retrieve-boundary="page-sequence"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="." mode="titleabbrev.markup"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:if> +      </xsl:when> + +      <xsl:when test="$position='center'"> +        <!-- nothing for empty and blank sequences --> +      </xsl:when> + +      <xsl:when test="$position='right'"> +        <!-- Same for odd, even, empty, and blank sequences --> +        <xsl:call-template name="draft.text"/> +      </xsl:when> + +      <xsl:when test="$sequence = 'first'"> +        <!-- nothing for first pages --> +      </xsl:when> + +      <xsl:when test="$sequence = 'blank'"> +        <!-- nothing for blank pages --> +      </xsl:when> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<xsl:template name="header.footer.width"> +  <xsl:param name="location" select="'header'"/> +  <xsl:param name="position" select="1"/> + +  <xsl:variable name="width.set"> +    <xsl:choose> +      <xsl:when test="$location = 'header'"> +        <xsl:value-of select="normalize-space($header.column.widths)"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="normalize-space($footer.column.widths)"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + + +  <xsl:variable name="width"> +    <xsl:choose> +      <xsl:when test="$position = 1"> +        <xsl:value-of select="substring-before($width.set, ' ')"/> +      </xsl:when> +      <xsl:when test="$position = 2"> +        <xsl:value-of select="substring-before(substring-after($width.set, ' '), ' ')"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="substring-after(substring-after($width.set, ' '), ' ')"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Make sure it is a number --> +  <xsl:choose> +    <xsl:when test = "$width = number($width)"> +      <xsl:value-of select="$width"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message>Error: value in <xsl:value-of select="$location"/>.column.widths at position <xsl:value-of select="$position"/> is not a number.</xsl:message> +      <xsl:text>1</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="draft.text"> +  <xsl:choose> +    <xsl:when test="$draft.mode = 'yes'"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'Draft'"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$draft.mode = 'no'"> +      <!-- nop --> +    </xsl:when> +    <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'Draft'"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <!-- nop --> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="running.foot.mode"> +  <xsl:param name="master-reference" select="'unknown'"/> +  <xsl:param name="gentext-key" select="local-name(.)"/> + +  <!-- remove -draft from reference --> +  <xsl:variable name="pageclass"> +    <xsl:choose> +      <xsl:when test="contains($master-reference, '-draft')"> +        <xsl:value-of select="substring-before($master-reference, '-draft')"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$master-reference"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:static-content flow-name="xsl-region-after-first"> +    <fo:block xsl:use-attribute-sets="footer.content.properties"> +      <xsl:call-template name="footer.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'first'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-after-odd"> +    <fo:block xsl:use-attribute-sets="footer.content.properties"> +      <xsl:call-template name="footer.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'odd'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-after-even"> +    <fo:block xsl:use-attribute-sets="footer.content.properties"> +      <xsl:call-template name="footer.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'even'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-after-blank"> +    <fo:block xsl:use-attribute-sets="footer.content.properties"> +      <xsl:call-template name="footer.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'blank'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> +</xsl:template> + +<xsl:template name="footer.table"> +  <xsl:param name="pageclass" select="''"/> +  <xsl:param name="sequence" select="''"/> +  <xsl:param name="gentext-key" select="''"/> + +  <!-- default is a single table style for all footers --> +  <!-- Customize it for different page classes or sequence location --> + +  <xsl:choose> +      <xsl:when test="$pageclass = 'index'"> +          <xsl:attribute name="margin-left">0pt</xsl:attribute> +      </xsl:when> +  </xsl:choose> + +  <xsl:variable name="column1"> +    <xsl:choose> +      <xsl:when test="$double.sided = 0">1</xsl:when> +      <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when> +      <xsl:otherwise>3</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="column3"> +    <xsl:choose> +      <xsl:when test="$double.sided = 0">3</xsl:when> +      <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when> +      <xsl:otherwise>1</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="candidate"> +    <fo:table xsl:use-attribute-sets="footer.table.properties"> +      <xsl:call-template name="foot.sep.rule"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="$sequence"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +      <fo:table-column column-number="1"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">footer</xsl:with-param> +            <xsl:with-param name="position" select="$column1"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> +      <fo:table-column column-number="2"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">footer</xsl:with-param> +            <xsl:with-param name="position" select="2"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> +      <fo:table-column column-number="3"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">footer</xsl:with-param> +            <xsl:with-param name="position" select="$column3"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> + +      <fo:table-body> +        <fo:table-row> +          <xsl:attribute name="block-progression-dimension.minimum"> +            <xsl:value-of select="$footer.table.height"/> +          </xsl:attribute> +          <fo:table-cell text-align="left" +                         display-align="after"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="footer.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'left'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +          <fo:table-cell text-align="center" +                         display-align="after"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="footer.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'center'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +          <fo:table-cell text-align="right" +                         display-align="after"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="footer.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'right'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +        </fo:table-row> +      </fo:table-body> +    </fo:table> +  </xsl:variable> + +  <!-- Really output a footer? --> +  <xsl:choose> +    <xsl:when test="$pageclass='titlepage' and $gentext-key='book' +                    and $sequence='first'"> +      <!-- no, book titlepages have no footers at all --> +    </xsl:when> +    <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0"> +      <!-- no output --> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$candidate"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="footer.content"> +  <xsl:param name="pageclass" select="''"/> +  <xsl:param name="sequence" select="''"/> +  <xsl:param name="position" select="''"/> +  <xsl:param name="gentext-key" select="''"/> + +<!-- +  <fo:block> +    <xsl:value-of select="$pageclass"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$sequence"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$position"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$gentext-key"/> +  </fo:block> +--> + +  <fo:block> +    <!-- pageclass can be front, body, back --> +    <!-- sequence can be odd, even, first, blank --> +    <!-- position can be left, center, right --> +    <xsl:choose> +      <xsl:when test="$pageclass = 'titlepage'"> +        <!-- nop; no footer on title pages --> +      </xsl:when> + +      <xsl:when test="$double.sided != 0 and $sequence = 'even' +                      and $position='left'"> +        <fo:page-number/> +      </xsl:when> + +      <xsl:when test="$double.sided != 0 and ($sequence = 'odd' or $sequence = 'first') +                      and $position='right'"> +        <fo:page-number/> +      </xsl:when> + +      <xsl:when test="$double.sided = 0 and $position='center'"> +        <fo:page-number/> +      </xsl:when> + +      <xsl:when test="$sequence='blank'"> +        <xsl:choose> +          <xsl:when test="$double.sided != 0 and $position = 'left'"> +            <fo:page-number/> +          </xsl:when> +          <xsl:when test="$double.sided = 0 and $position = 'center'"> +            <fo:page-number/> +          </xsl:when> +          <xsl:otherwise> +            <!-- nop --> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:when> + + +      <xsl:otherwise> +        <!-- nop --> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="page.number.format"> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="master-reference" select="''"/> + +  <xsl:choose> +    <xsl:when test="$element = 'toc' and self::book">i</xsl:when> +    <xsl:when test="$element = 'preface'">i</xsl:when> +    <xsl:when test="$element = 'dedication'">i</xsl:when> +    <xsl:otherwise>1</xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="initial.page.number"> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="master-reference" select="''"/> + +  <!-- Select the first content that the stylesheet places +       after the TOC --> +  <xsl:variable name="first.book.content"  +                select="ancestor::book/*[ +                          not(self::title or +                              self::subtitle or +                              self::titleabbrev or +                              self::bookinfo or +                              self::info or +                              self::dedication or +                              self::preface or +                              self::toc or +                              self::lot)][1]"/> +  <xsl:choose> +    <!-- double-sided output --> +    <xsl:when test="$double.sided != 0"> +      <xsl:choose> +        <xsl:when test="$element = 'toc'">auto-odd</xsl:when> +        <xsl:when test="$element = 'book'">1</xsl:when> +        <!-- preface typically continues TOC roman numerals --> +        <!-- Change page.number.format if not --> +        <xsl:when test="$element = 'preface'">auto-odd</xsl:when> +        <xsl:when test="($element = 'dedication' or $element = 'article')  +                    and not(preceding::chapter +                            or preceding::preface +                            or preceding::appendix +                            or preceding::article +                            or preceding::dedication +                            or parent::part +                            or parent::reference)">1</xsl:when> +        <xsl:when test="generate-id($first.book.content) = +                        generate-id(.)">1</xsl:when> +        <xsl:otherwise>auto-odd</xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <!-- single-sided output --> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$element = 'toc'">auto</xsl:when> +        <xsl:when test="$element = 'book'">1</xsl:when> +        <xsl:when test="$element = 'preface'">auto</xsl:when> +       <xsl:when test="($element = 'dedication' or $element = 'article') and +                        not(preceding::chapter +                            or preceding::preface +                            or preceding::appendix +                            or preceding::article +                            or preceding::dedication +                            or parent::part +                            or parent::reference)">1</xsl:when> +        <xsl:when test="generate-id($first.book.content) = +                        generate-id(.)">1</xsl:when> +        <xsl:otherwise>auto</xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="force.page.count"> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="master-reference" select="''"/> + +  <xsl:choose> +    <!-- double-sided output --> +    <xsl:when test="$double.sided != 0">end-on-even</xsl:when> +    <!-- single-sided output --> +    <xsl:otherwise>no-force</xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="set.flow.properties"> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="master-reference" select="''"/> + +  <!-- This template is called after each <fo:flow> starts. --> +  <!-- Customize this template to set attributes on fo:flow --> + +  <!-- remove -draft from reference --> +  <xsl:variable name="pageclass"> +    <xsl:choose> +      <xsl:when test="contains($master-reference, '-draft')"> +        <xsl:value-of select="substring-before($master-reference, '-draft')"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$master-reference"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0 or $passivetex.extensions != 0"> +      <!-- body.start.indent does not work well with these processors --> +    </xsl:when> +    <xsl:when test="starts-with($pageclass, 'body') or +                    starts-with($pageclass, 'lot') or +                    starts-with($pageclass, 'front') or +                    $element = 'preface' or +                    (starts-with($pageclass, 'back') and +                    $element = 'appendix')"> +      <xsl:attribute name="start-indent"> +        <xsl:value-of select="$body.start.indent"/> +      </xsl:attribute> +      <xsl:attribute name="end-indent"> +        <xsl:value-of select="$body.end.indent"/> +      </xsl:attribute> +    </xsl:when> +  </xsl:choose> + +</xsl:template> +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/param.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/param.xsl.svn-base new file mode 100644 index 0000000..c033afa --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/param.xsl.svn-base @@ -0,0 +1,891 @@ +<?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$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:attribute-set name="abstract.properties"> +  <xsl:attribute name="start-indent">0.0in</xsl:attribute> +  <xsl:attribute name="end-indent">0.0in</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="abstract.title.properties"> +  <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"/></xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"/></xsl:attribute> +  <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"/></xsl:attribute> +  <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"/></xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="admon.graphics.extension">.png</xsl:param> +<xsl:param name="admon.graphics" select="0"/> +<xsl:param name="admon.graphics.path">images/</xsl:param> +<xsl:param name="admon.textlabel" select="1"/> +<xsl:attribute-set name="admonition.properties"/> +<xsl:attribute-set name="admonition.title.properties"> +  <xsl:attribute name="font-size">14pt</xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="graphical.admonition.properties"> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="nongraphical.admonition.properties"> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="margin-left">0.25in</xsl:attribute> +  <xsl:attribute name="margin-right">0.25in</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="alignment">justify</xsl:param> +<xsl:param name="appendix.autolabel">A</xsl:param> +<xsl:param name="arbortext.extensions" select="0"/> +<xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties                          section.title.level1.properties"> +  <xsl:attribute name="margin-left"> +    <xsl:value-of select="$title.margin.left"/> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:param name="author.othername.in.middle" select="1"/> +<xsl:param name="autotoc.label.separator">. </xsl:param> +<xsl:param name="axf.extensions" select="0"/> +<xsl:param name="biblioentry.item.separator">. </xsl:param> +<xsl:attribute-set name="biblioentry.properties" use-attribute-sets="normal.para.spacing"> +  <xsl:attribute name="start-indent">0.5in</xsl:attribute> +  <xsl:attribute name="text-indent">-0.5in</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param> + +<xsl:param name="bibliography.numbered" select="0"/> +<xsl:param name="bibliography.style">normal</xsl:param> +<xsl:attribute-set name="blockquote.properties"> +<xsl:attribute name="margin-left">0.5in</xsl:attribute> +<xsl:attribute name="margin-right">0.5in</xsl:attribute> +<xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> +<xsl:attribute name="space-after.optimum">1em</xsl:attribute> +<xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="body.font.family">serif</xsl:param> +<xsl:param name="body.font.master">10</xsl:param> +<xsl:param name="body.font.size"> + <xsl:value-of select="$body.font.master"/><xsl:text>pt</xsl:text> +</xsl:param> +<xsl:param name="body.margin.bottom">0.5in</xsl:param> +<xsl:param name="body.margin.top">0.5in</xsl:param> +<xsl:param name="body.start.indent"> +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0">0pt</xsl:when> +    <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when> +    <xsl:otherwise>4pc</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="body.end.indent">0pt</xsl:param> +<xsl:param name="bridgehead.in.toc" select="0"/> +<xsl:param name="callout.defaultcolumn">60</xsl:param> + +<xsl:param name="callout.graphics.extension">.svg</xsl:param> +<xsl:param name="callout.graphics" select="1"/> +<xsl:param name="callout.icon.size">7pt</xsl:param> + +<xsl:param name="callout.graphics.number.limit">30</xsl:param> +<xsl:param name="callout.graphics.path">images/callouts/</xsl:param> +<xsl:param name="callout.unicode.font">ZapfDingbats</xsl:param> +<xsl:param name="callout.unicode" select="0"/> +<xsl:param name="callout.unicode.number.limit">10</xsl:param> +<xsl:param name="callout.unicode.start.character">10102</xsl:param> +<xsl:param name="callouts.extension" select="1"/> +<xsl:param name="chapter.autolabel" select="1"/> +<xsl:param name="collect.xref.targets">no</xsl:param> +<xsl:param name="column.count.back" select="1"/> +<xsl:param name="column.count.body" select="1"/> +<xsl:param name="column.count.front" select="1"/> +<xsl:param name="column.count.index">2</xsl:param> +<xsl:param name="column.count.lot" select="1"/> +<xsl:param name="column.count.titlepage" select="1"/> +<xsl:param name="column.gap.back">12pt</xsl:param> +<xsl:param name="column.gap.body">12pt</xsl:param> +<xsl:param name="column.gap.front">12pt</xsl:param> +<xsl:param name="column.gap.index">12pt</xsl:param> +<xsl:param name="column.gap.lot">12pt</xsl:param> +<xsl:param name="column.gap.titlepage">12pt</xsl:param> +<xsl:attribute-set name="compact.list.item.spacing"> +  <xsl:attribute name="space-before.optimum">0em</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">0.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="component.label.includes.part.label" select="0"/> +<xsl:attribute-set name="component.title.properties"> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"/></xsl:attribute> +  <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"/></xsl:attribute> +  <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"/></xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="text-align"> +    <xsl:choose> +      <xsl:when test="((parent::article | parent::articleinfo | parent::info/parent::article) and not(ancestor::book) and not(self::bibliography))         or (parent::slides | parent::slidesinfo)">center</xsl:when> +      <xsl:otherwise>left</xsl:otherwise> +    </xsl:choose> +  </xsl:attribute> +  <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="component.titlepage.properties"> +</xsl:attribute-set> +<xsl:param name="crop.marks" select="0"/> +<xsl:param name="crop.mark.width">0.5pt</xsl:param> +<xsl:param name="crop.mark.offset">24pt</xsl:param> +<xsl:param name="crop.mark.bleed">6pt</xsl:param> +<xsl:param name="current.docid"/> +<xsl:param name="default.float.class"> +  <xsl:choose> +    <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when> +    <xsl:otherwise>before</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="default.image.width"/> +<xsl:param name="default.table.width"/> +<xsl:param name="default.table.frame">all</xsl:param> +<xsl:param name="default.units">pt</xsl:param> +<xsl:param name="dingbat.font.family">serif</xsl:param> +<xsl:param name="double.sided" select="0"/> +<xsl:param name="draft.mode">maybe</xsl:param> +<xsl:param name="draft.watermark.image">http://docbook.sourceforge.net/release/images/draft.png</xsl:param> + +<xsl:param name="ebnf.assignment"> +  <fo:inline xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$monospace.font.family}"> +    <xsl:text>::=</xsl:text> +  </fo:inline> +</xsl:param> + +<xsl:param name="ebnf.statement.terminator"/> +<xsl:param name="email.delimiters.enabled" select="1"/> +<xsl:attribute-set name="equation.properties" use-attribute-sets="formal.object.properties"/> +<xsl:attribute-set name="example.properties" use-attribute-sets="formal.object.properties"/> +<xsl:attribute-set name="figure.properties" use-attribute-sets="formal.object.properties"/> +<xsl:param name="firstterm.only.link" select="0"/> +<xsl:attribute-set name="footer.content.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$body.fontset"/> +  </xsl:attribute> +  <xsl:attribute name="margin-left"> +    <xsl:value-of select="$title.margin.left"/> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:param name="footer.rule" select="1"/> +<xsl:param name="footer.column.widths">1 1 1</xsl:param> +<xsl:param name="footer.table.height">14pt</xsl:param> +<xsl:attribute-set name="footer.table.properties"> +  <xsl:attribute name="table-layout">fixed</xsl:attribute> +  <xsl:attribute name="width">100%</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="footers.on.blank.pages" select="1"/> +<xsl:param name="footnote.font.size"> + <xsl:value-of select="$body.font.master * 0.8"/><xsl:text>pt</xsl:text> +</xsl:param> +<xsl:param name="footnote.number.format">1</xsl:param> +<xsl:param name="footnote.number.symbols"/> +<xsl:attribute-set name="footnote.mark.properties"> +  <xsl:attribute name="font-size">75%</xsl:attribute> +  <xsl:attribute name="font-weight">normal</xsl:attribute> +  <xsl:attribute name="font-style">normal</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="footnote.properties"> +  <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"/></xsl:attribute> +  <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"/></xsl:attribute> +  <xsl:attribute name="font-weight">normal</xsl:attribute> +  <xsl:attribute name="font-style">normal</xsl:attribute> +  <xsl:attribute name="text-align"><xsl:value-of select="$alignment"/></xsl:attribute> +  <xsl:attribute name="start-indent">0pt</xsl:attribute> +  <xsl:attribute name="text-indent">0pt</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="footnote.sep.leader.properties"> +  <xsl:attribute name="color">black</xsl:attribute> +  <xsl:attribute name="leader-pattern">rule</xsl:attribute> +  <xsl:attribute name="leader-length">1in</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="fop.extensions" select="0"/> +<xsl:param name="fop1.extensions" select="0"/> +<xsl:attribute-set name="formal.object.properties"> +  <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">2em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">2em</xsl:attribute> +  <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="formal.procedures" select="1"/> +<xsl:param name="formal.title.placement"> +figure before +example before +equation before +table before +procedure before +task before +</xsl:param> +<xsl:attribute-set name="formal.title.properties" use-attribute-sets="normal.para.spacing"> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.2"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">0.6em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">0.8em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="funcsynopsis.decoration" select="1"/> +<xsl:param name="funcsynopsis.style">kr</xsl:param> +<xsl:param name="function.parens" select="0"/> +<xsl:param name="generate.index" select="1"/> +<xsl:param name="generate.section.toc.level" select="0"/> + +<xsl:param name="generate.toc"> +/appendix toc,title +article/appendix  nop +/article  toc,title +book      toc,title,figure,table,example,equation +/chapter  toc,title +part      toc,title +/preface  toc,title +reference toc,title +/sect1    toc +/sect2    toc +/sect3    toc +/sect4    toc +/sect5    toc +/section  toc +set       toc,title +</xsl:param> +<xsl:param name="glossary.as.blocks" select="0"/> +<xsl:param name="glossary.collection"/> +<xsl:param name="glossary.sort" select="0"/> +<xsl:param name="glossentry.show.acronym">no</xsl:param> +<xsl:param name="glosslist.as.blocks" select="0"/> +<xsl:param name="glossterm.auto.link" select="0"/> +<xsl:param name="glossterm.separation">0.25in</xsl:param> +<xsl:param name="glossterm.width">2in</xsl:param> +<xsl:param name="graphic.default.extension"/> +<xsl:attribute-set name="header.content.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$body.fontset"/> +  </xsl:attribute> +  <xsl:attribute name="margin-left"> +    <xsl:value-of select="$title.margin.left"/> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:param name="header.rule" select="1"/> +<xsl:param name="header.column.widths">1 1 1</xsl:param> +<xsl:param name="header.table.height">14pt</xsl:param> +<xsl:attribute-set name="header.table.properties"> +  <xsl:attribute name="table-layout">fixed</xsl:attribute> +  <xsl:attribute name="width">100%</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="headers.on.blank.pages" select="1"/> +<xsl:param name="highlight.default.language"/> +<xsl:param name="highlight.source" select="0"/> +<xsl:param name="hyphenate">true</xsl:param> +<xsl:param name="hyphenate.verbatim" select="0"/> +<xsl:param name="hyphenate.verbatim.characters"/> +<xsl:param name="ignore.image.scaling" select="0"/> +<xsl:param name="img.src.path"/> +<xsl:param name="index.method">basic</xsl:param> +<xsl:param name="index.on.role" select="0"/> +<xsl:param name="index.on.type" select="0"/> +<xsl:attribute-set name="index.page.number.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="informalequation.properties" use-attribute-sets="informal.object.properties"/> +<xsl:attribute-set name="informalexample.properties" use-attribute-sets="informal.object.properties"/> +<xsl:attribute-set name="informalfigure.properties" use-attribute-sets="informal.object.properties"/> +<xsl:attribute-set name="informal.object.properties"> +  <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">2em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="informaltable.properties" use-attribute-sets="informal.object.properties"/> +<xsl:attribute-set name="index.preferred.page.properties"> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="index.div.title.properties"> +  <xsl:attribute name="margin-left">0pt</xsl:attribute> +  <xsl:attribute name="font-size">14.4pt</xsl:attribute> +  <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"/></xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master,'pt')"/></xsl:attribute> +  <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master,'pt * 0.8')"/></xsl:attribute> +  <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master,'pt * 1.2')"/></xsl:attribute> +  <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="index.entry.properties"> +  <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="index.number.separator"/> +<xsl:param name="index.range.separator"/> +<xsl:param name="index.term.separator"/> +<xsl:param name="insert.link.page.number">no</xsl:param> +<xsl:param name="insert.xref.page.number">no</xsl:param> +<xsl:attribute-set name="itemizedlist.properties" use-attribute-sets="list.block.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="itemizedlist.label.properties"> +</xsl:attribute-set> +    <xsl:param name="itemizedlist.label.width">1.0em</xsl:param> +   + +<xsl:param name="keep.relative.image.uris" select="0"/> +<xsl:param name="l10n.gentext.default.language">en</xsl:param> +<xsl:param name="l10n.gentext.language"/> +<xsl:param name="l10n.gentext.use.xref.language" select="0"/> +<xsl:param name="l10n.lang.value.rfc.compliant" select="1"/> +<xsl:param name="label.from.part" select="0"/> +<xsl:param name="line-height">normal</xsl:param> +<xsl:param name="linenumbering.everyNth">5</xsl:param> +<xsl:param name="linenumbering.extension" select="1"/> +<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param> +<xsl:param name="linenumbering.width">3</xsl:param> +<xsl:attribute-set name="list.block.properties"> +  <xsl:attribute name="provisional-label-separation">0.2em</xsl:attribute> +  <xsl:attribute name="provisional-distance-between-starts">1.5em</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="list.block.spacing"> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="list.item.spacing"> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="make.index.markup" select="0"/> +<xsl:param name="make.single.year.ranges" select="0"/> +<xsl:param name="make.year.ranges" select="0"/> +<xsl:attribute-set name="margin.note.properties"> +  <xsl:attribute name="font-size">90%</xsl:attribute> +  <xsl:attribute name="text-align">start</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="margin.note.title.properties"> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="text-align">start</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="margin.note.float.type">none</xsl:param> +<xsl:param name="margin.note.width">1in</xsl:param> +<xsl:param name="marker.section.level">2</xsl:param> +<xsl:param name="menuchoice.menu.separator"> → </xsl:param> +<xsl:param name="menuchoice.separator">+</xsl:param> +<xsl:param name="monospace.font.family">monospace</xsl:param> +<xsl:attribute-set name="monospace.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$monospace.font.family"/> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="monospace.verbatim.properties" use-attribute-sets="verbatim.properties monospace.properties"> +  <xsl:attribute name="text-align">start</xsl:attribute> +  <xsl:attribute name="wrap-option">no-wrap</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="nominal.table.width">6in</xsl:param> +<xsl:attribute-set name="normal.para.spacing"> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="olink.doctitle">no</xsl:param>  +<xsl:param name="olink.base.uri"/> +<xsl:param name="olink.debug" select="0"/> +<xsl:attribute-set name="olink.properties"> +  <xsl:attribute name="show-destination">replace</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="olink.lang.fallback.sequence"/> +<xsl:attribute-set name="orderedlist.properties" use-attribute-sets="list.block.properties"> +  <xsl:attribute name="provisional-distance-between-starts">2em</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="orderedlist.label.properties"> +</xsl:attribute-set> +<xsl:param name="orderedlist.label.width">1.2em</xsl:param> +<xsl:param name="prefer.internal.olink" select="0"/> +<xsl:param name="insert.olink.page.number">no</xsl:param> +<xsl:param name="insert.olink.pdf.frag" select="0"/> +<xsl:param name="page.height"> +  <xsl:choose> +    <xsl:when test="$page.orientation = 'portrait'"> +      <xsl:value-of select="$page.height.portrait"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$page.width.portrait"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="page.height.portrait"> +  <xsl:choose> +    <xsl:when test="$paper.type = 'A4landscape'">210mm</xsl:when> +    <xsl:when test="$paper.type = 'USletter'">11in</xsl:when> +    <xsl:when test="$paper.type = 'USlandscape'">8.5in</xsl:when> +    <xsl:when test="$paper.type = '4A0'">2378mm</xsl:when> +    <xsl:when test="$paper.type = '2A0'">1682mm</xsl:when> +    <xsl:when test="$paper.type = 'A0'">1189mm</xsl:when> +    <xsl:when test="$paper.type = 'A1'">841mm</xsl:when> +    <xsl:when test="$paper.type = 'A2'">594mm</xsl:when> +    <xsl:when test="$paper.type = 'A3'">420mm</xsl:when> +    <xsl:when test="$paper.type = 'A4'">297mm</xsl:when> +    <xsl:when test="$paper.type = 'A5'">210mm</xsl:when> +    <xsl:when test="$paper.type = 'A6'">148mm</xsl:when> +    <xsl:when test="$paper.type = 'A7'">105mm</xsl:when> +    <xsl:when test="$paper.type = 'A8'">74mm</xsl:when> +    <xsl:when test="$paper.type = 'A9'">52mm</xsl:when> +    <xsl:when test="$paper.type = 'A10'">37mm</xsl:when> +    <xsl:when test="$paper.type = 'B0'">1414mm</xsl:when> +    <xsl:when test="$paper.type = 'B1'">1000mm</xsl:when> +    <xsl:when test="$paper.type = 'B2'">707mm</xsl:when> +    <xsl:when test="$paper.type = 'B3'">500mm</xsl:when> +    <xsl:when test="$paper.type = 'B4'">353mm</xsl:when> +    <xsl:when test="$paper.type = 'B5'">250mm</xsl:when> +    <xsl:when test="$paper.type = 'B6'">176mm</xsl:when> +    <xsl:when test="$paper.type = 'B7'">125mm</xsl:when> +    <xsl:when test="$paper.type = 'B8'">88mm</xsl:when> +    <xsl:when test="$paper.type = 'B9'">62mm</xsl:when> +    <xsl:when test="$paper.type = 'B10'">44mm</xsl:when> +    <xsl:when test="$paper.type = 'C0'">1297mm</xsl:when> +    <xsl:when test="$paper.type = 'C1'">917mm</xsl:when> +    <xsl:when test="$paper.type = 'C2'">648mm</xsl:when> +    <xsl:when test="$paper.type = 'C3'">458mm</xsl:when> +    <xsl:when test="$paper.type = 'C4'">324mm</xsl:when> +    <xsl:when test="$paper.type = 'C5'">229mm</xsl:when> +    <xsl:when test="$paper.type = 'C6'">162mm</xsl:when> +    <xsl:when test="$paper.type = 'C7'">114mm</xsl:when> +    <xsl:when test="$paper.type = 'C8'">81mm</xsl:when> +    <xsl:when test="$paper.type = 'C9'">57mm</xsl:when> +    <xsl:when test="$paper.type = 'C10'">40mm</xsl:when> +    <xsl:otherwise>11in</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="page.margin.bottom">0.5in</xsl:param> +<xsl:param name="page.margin.inner"> +  <xsl:choose> +    <xsl:when test="$double.sided != 0">1.25in</xsl:when> +    <xsl:otherwise>1in</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="page.margin.outer"> +  <xsl:choose> +    <xsl:when test="$double.sided != 0">0.75in</xsl:when> +    <xsl:otherwise>1in</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="page.margin.top">0.5in</xsl:param> +<xsl:param name="page.orientation">portrait</xsl:param> +<xsl:param name="page.width"> +  <xsl:choose> +    <xsl:when test="$page.orientation = 'portrait'"> +      <xsl:value-of select="$page.width.portrait"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$page.height.portrait"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="page.width.portrait"> +  <xsl:choose> +    <xsl:when test="$paper.type = 'USletter'">8.5in</xsl:when> +    <xsl:when test="$paper.type = '4A0'">1682mm</xsl:when> +    <xsl:when test="$paper.type = '2A0'">1189mm</xsl:when> +    <xsl:when test="$paper.type = 'A0'">841mm</xsl:when> +    <xsl:when test="$paper.type = 'A1'">594mm</xsl:when> +    <xsl:when test="$paper.type = 'A2'">420mm</xsl:when> +    <xsl:when test="$paper.type = 'A3'">297mm</xsl:when> +    <xsl:when test="$paper.type = 'A4'">210mm</xsl:when> +    <xsl:when test="$paper.type = 'A5'">148mm</xsl:when> +    <xsl:when test="$paper.type = 'A6'">105mm</xsl:when> +    <xsl:when test="$paper.type = 'A7'">74mm</xsl:when> +    <xsl:when test="$paper.type = 'A8'">52mm</xsl:when> +    <xsl:when test="$paper.type = 'A9'">37mm</xsl:when> +    <xsl:when test="$paper.type = 'A10'">26mm</xsl:when> +    <xsl:when test="$paper.type = 'B0'">1000mm</xsl:when> +    <xsl:when test="$paper.type = 'B1'">707mm</xsl:when> +    <xsl:when test="$paper.type = 'B2'">500mm</xsl:when> +    <xsl:when test="$paper.type = 'B3'">353mm</xsl:when> +    <xsl:when test="$paper.type = 'B4'">250mm</xsl:when> +    <xsl:when test="$paper.type = 'B5'">176mm</xsl:when> +    <xsl:when test="$paper.type = 'B6'">125mm</xsl:when> +    <xsl:when test="$paper.type = 'B7'">88mm</xsl:when> +    <xsl:when test="$paper.type = 'B8'">62mm</xsl:when> +    <xsl:when test="$paper.type = 'B9'">44mm</xsl:when> +    <xsl:when test="$paper.type = 'B10'">31mm</xsl:when> +    <xsl:when test="$paper.type = 'C0'">917mm</xsl:when> +    <xsl:when test="$paper.type = 'C1'">648mm</xsl:when> +    <xsl:when test="$paper.type = 'C2'">458mm</xsl:when> +    <xsl:when test="$paper.type = 'C3'">324mm</xsl:when> +    <xsl:when test="$paper.type = 'C4'">229mm</xsl:when> +    <xsl:when test="$paper.type = 'C5'">162mm</xsl:when> +    <xsl:when test="$paper.type = 'C6'">114mm</xsl:when> +    <xsl:when test="$paper.type = 'C7'">81mm</xsl:when> +    <xsl:when test="$paper.type = 'C8'">57mm</xsl:when> +    <xsl:when test="$paper.type = 'C9'">40mm</xsl:when> +    <xsl:when test="$paper.type = 'C10'">28mm</xsl:when> +    <xsl:otherwise>8.5in</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="paper.type">USletter</xsl:param> +<xsl:param name="part.autolabel">I</xsl:param> +<xsl:param name="passivetex.extensions" select="0"/> +<xsl:attribute-set name="pgwide.properties"> +  <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="preface.autolabel" select="0"/> +<xsl:param name="preferred.mediaobject.role"/> +<xsl:attribute-set name="procedure.properties" use-attribute-sets="formal.object.properties"> +  <xsl:attribute name="keep-together.within-column">auto</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="process.empty.source.toc" select="0"/> +<xsl:param name="process.source.toc" select="0"/> +<xsl:param name="profile.arch"/> +<xsl:param name="profile.audience"/> +<xsl:param name="profile.attribute"/> +<xsl:param name="profile.condition"/> +<xsl:param name="profile.conformance"/> +<xsl:param name="profile.lang"/> +<xsl:param name="profile.os"/> +<xsl:param name="profile.revision"/> +<xsl:param name="profile.revisionflag"/> +<xsl:param name="profile.role"/> +<xsl:param name="profile.security"/> +<xsl:param name="profile.separator">;</xsl:param> +<xsl:param name="profile.status"/> +<xsl:param name="profile.userlevel"/> +<xsl:param name="profile.value"/> +<xsl:param name="profile.vendor"/> +<xsl:param name="profile.wordsize"/> +<xsl:param name="punct.honorific">.</xsl:param> +<xsl:param name="qanda.defaultlabel">number</xsl:param> +<xsl:param name="qanda.in.toc" select="0"/> +<xsl:param name="qanda.nested.in.toc" select="0"/> +<xsl:param name="qanda.inherit.numeration" select="1"/> +<xsl:param name="qandadiv.autolabel" select="1"/> +<xsl:attribute-set name="qanda.title.level1.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 2.0736"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.level2.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.728"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.level3.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.44"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.level4.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.2"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.level5.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.level6.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$title.font.family"/> +  </xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <!-- font size is calculated dynamically by qanda.heading template --> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="refentry.generate.name" select="1"/> +<xsl:param name="refentry.generate.title" select="0"/> +<xsl:param name="refentry.pagebreak" select="1"/> +<xsl:attribute-set name="refentry.title.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$title.font.family"/> +  </xsl:attribute> +  <xsl:attribute name="font-size">18pt</xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="space-after">1em</xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">0.6em</xsl:attribute> +  <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute> +</xsl:attribute-set> +<xsl:param name="refentry.xref.manvolnum" select="1"/> +  <xsl:param name="reference.autolabel">I</xsl:param> +<xsl:param name="refclass.suppress" select="0"/> +<xsl:param name="region.after.extent">0.4in</xsl:param> +<xsl:param name="region.before.extent">0.4in</xsl:param> +<xsl:attribute-set name="revhistory.table.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="revhistory.table.cell.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="revhistory.title.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="root.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$body.fontset"/> +  </xsl:attribute> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.size"/> +  </xsl:attribute> +  <xsl:attribute name="text-align"> +    <xsl:value-of select="$alignment"/> +  </xsl:attribute> +  <xsl:attribute name="line-height"> +    <xsl:value-of select="$line-height"/> +  </xsl:attribute> +  <xsl:attribute name="font-selection-strategy">character-by-character</xsl:attribute> +  <xsl:attribute name="line-height-shift-adjustment">disregard-shifts</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="rootid"/> +<xsl:param name="runinhead.default.title.end.punct">.</xsl:param> +<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param> +<xsl:param name="sans.font.family">sans-serif</xsl:param> +<xsl:param name="section.autolabel" select="0"/> +<xsl:param name="section.autolabel.max.depth">8</xsl:param> +<xsl:param name="section.container.element">block</xsl:param> +<xsl:param name="section.label.includes.component.label" select="0"/> +<xsl:attribute-set name="section.title.level1.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 2.0736"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.level2.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.728"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.level3.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.44"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.level4.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.2"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.level5.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.level6.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$title.font.family"/> +  </xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <!-- font size is calculated dynamically by section.heading template --> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="text-align">left</xsl:attribute> +  <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.level1.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.level2.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.level3.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.level4.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.level5.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.level6.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.properties"> +</xsl:attribute-set> +<xsl:param name="segmentedlist.as.table" select="0"/> +<xsl:param name="shade.verbatim" select="0"/> + +<xsl:attribute-set name="shade.verbatim.style"> +  <xsl:attribute name="background-color">#E0E0E0</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="show.comments" select="1"/> +<xsl:attribute-set name="sidebar.properties" use-attribute-sets="formal.object.properties"> +  <xsl:attribute name="border-style">solid</xsl:attribute> +  <xsl:attribute name="border-width">1pt</xsl:attribute> +  <xsl:attribute name="border-color">black</xsl:attribute> +  <xsl:attribute name="background-color">#DDDDDD</xsl:attribute> +  <xsl:attribute name="padding-left">12pt</xsl:attribute> +  <xsl:attribute name="padding-right">12pt</xsl:attribute> +  <xsl:attribute name="padding-top">6pt</xsl:attribute> +  <xsl:attribute name="padding-bottom">6pt</xsl:attribute> +  <xsl:attribute name="margin-left">0pt</xsl:attribute> +  <xsl:attribute name="margin-right">0pt</xsl:attribute> +<!-- +  <xsl:attribute name="margin-top">6pt</xsl:attribute> +  <xsl:attribute name="margin-bottom">6pt</xsl:attribute> +--> +</xsl:attribute-set> +<xsl:attribute-set name="sidebar.title.properties"> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="text-align">start</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="sidebar.float.type">none</xsl:param> +<xsl:param name="sidebar.float.width">1in</xsl:param> +<xsl:param name="simplesect.in.toc" select="0"/> +<xsl:attribute-set name="subscript.properties"> +  <xsl:attribute name="font-size">75%</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="superscript.properties"> +  <xsl:attribute name="font-size">75%</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="symbol.font.family">Symbol,ZapfDingbats</xsl:param> + +<xsl:param name="table.cell.border.color">black</xsl:param> +<xsl:param name="table.cell.border.style">solid</xsl:param> +<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param> +<xsl:attribute-set name="table.cell.padding"> +  <xsl:attribute name="padding-left">2pt</xsl:attribute> +  <xsl:attribute name="padding-right">2pt</xsl:attribute> +  <xsl:attribute name="padding-top">2pt</xsl:attribute> +  <xsl:attribute name="padding-bottom">2pt</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="table.footnote.number.format">a</xsl:param> +<xsl:param name="table.footnote.number.symbols"/> +<xsl:attribute-set name="table.footnote.properties"> +  <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"/></xsl:attribute> +  <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"/></xsl:attribute> +  <xsl:attribute name="font-weight">normal</xsl:attribute> +  <xsl:attribute name="font-style">normal</xsl:attribute> +  <xsl:attribute name="space-before">2pt</xsl:attribute> +  <xsl:attribute name="text-align"><xsl:value-of select="$alignment"/></xsl:attribute> +</xsl:attribute-set> + +<xsl:param name="table.frame.border.color">black</xsl:param> +<xsl:param name="table.frame.border.style">solid</xsl:param> +<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param> +<xsl:attribute-set name="table.properties" use-attribute-sets="formal.object.properties"/> +<xsl:param name="tablecolumns.extension" select="1"/> +<xsl:attribute-set name="table.table.properties"> +  <xsl:attribute name="border-before-width.conditionality">retain</xsl:attribute> +  <xsl:attribute name="border-collapse">collapse</xsl:attribute> +</xsl:attribute-set> + <xsl:param name="target.database.document">olinkdb.xml</xsl:param> +<xsl:param name="targets.filename">target.db</xsl:param> +<xsl:param name="textdata.default.encoding"/> +<xsl:param name="tex.math.delims" select="1"/> +<xsl:param name="tex.math.in.alt"/> +  <xsl:param name="textinsert.extension" select="1"/> +<xsl:param name="title.font.family">sans-serif</xsl:param> +<xsl:param name="title.margin.left"> +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0">-4pc</xsl:when> +    <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when> +    <xsl:otherwise>0pt</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="toc.indent.width">24</xsl:param> +<!-- inconsistant point specification? --> +<xsl:attribute-set name="toc.line.properties"> +  <xsl:attribute name="text-align-last">justify</xsl:attribute> +  <xsl:attribute name="text-align">start</xsl:attribute> +  <xsl:attribute name="end-indent"><xsl:value-of select="concat($toc.indent.width, 'pt')"/></xsl:attribute> +  <xsl:attribute name="last-line-end-indent"><xsl:value-of select="concat('-', $toc.indent.width, 'pt')"/></xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="toc.margin.properties"> +  <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">2em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="toc.max.depth">8</xsl:param> +<xsl:param name="toc.section.depth">2</xsl:param> +<xsl:param name="ulink.footnotes" select="0"/> +<xsl:param name="ulink.hyphenate"/> +<xsl:param name="ulink.hyphenate.chars">/</xsl:param> +<xsl:param name="ulink.show" select="1"/> +<xsl:param name="use.extensions" select="0"/> +<xsl:param name="use.local.olink.style" select="0"/>  +<xsl:param name="use.role.as.xrefstyle" select="1"/> +<xsl:param name="use.role.for.mediaobject" select="1"/> +<xsl:param name="use.svg" select="1"/> +<xsl:param name="variablelist.as.blocks" select="0"/> +<xsl:param name="variablelist.max.termlength">24</xsl:param> +<xsl:param name="variablelist.term.separator">, </xsl:param> +<xsl:param name="variablelist.term.break.after">0</xsl:param> +<xsl:attribute-set name="verbatim.properties"> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="wrap-option">no-wrap</xsl:attribute> +  <xsl:attribute name="white-space-collapse">false</xsl:attribute> +  <xsl:attribute name="white-space-treatment">preserve</xsl:attribute> +  <xsl:attribute name="linefeed-treatment">preserve</xsl:attribute> +  <xsl:attribute name="text-align">start</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="xep.extensions" select="0"/> +<xsl:attribute-set name="xep.index.item.properties" use-attribute-sets="index.page.number.properties"> +  <xsl:attribute name="merge-subsequent-page-numbers">true</xsl:attribute> +  <xsl:attribute name="link-back">true</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param> +<xsl:param name="xref.label-title.separator">: </xsl:param> +<xsl:attribute-set name="xref.properties"> +</xsl:attribute-set> +<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param> +<xsl:param name="xref.with.number.and.title" select="1"/> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/passivetex.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/passivetex.xsl.svn-base new file mode 100644 index 0000000..9fa13dd --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/passivetex.xsl.svn-base @@ -0,0 +1,36 @@ +<?xml version='1.0' encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** +      This extension stops PassiveTeX from merging subsequent '-' to  +      dashes. You must set passivetex.extensions to '1' if you want get +      this functionality. +     ******************************************************************** --> + +<xsl:template name="passivetex.dash.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, '--')"> +      <xsl:variable name="rest"> +        <xsl:call-template name="passivetex.dash.subst"> +          <xsl:with-param name="string" +                          select="concat('-', substring-after($string, '--'))"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:value-of select="concat(substring-before($string, '--'), +                                   '-​', +                                   $rest)"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$string"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/pdf2index.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/pdf2index.svn-base new file mode 100644 index 0000000..c14d8ec --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/pdf2index.svn-base @@ -0,0 +1,140 @@ +#!/usr/bin/perl -- # -*- Perl -*- + +# this needs some cleanup... + +my $PSTOTEXT = "pstotext"; + +my $pdf = shift @ARGV; + +my $index = ""; +my $inindex = 0; +open (F, "$PSTOTEXT $pdf |"); +while (<F>) { +    if (/^<\/index/) { +	$index .= $_; +	$inindex = 0; +    } +    $inindex = 1 if /^<index/; + +    if ($inindex) { +	$index .= $_ if /^\s*</; +    } +} + +my $cindex = ""; +while ($index =~ /^(.*?)((<phrase role=\"pageno\">.*?<\/phrase>\s*)+)/s) { +    $cindex .= $1; +    $_ = $2; +    $index = $'; # ' + +    my @pages = m/<phrase role=\"pageno\">.*?<\/phrase>\s*/sg; + +    # Expand ranges +    if ($#pages >= 0) { +	my @mpages = (); +	foreach my $page (@pages) { +	    my $pageno = &pageno($page); +	    if ($pageno =~ /^([0-9]+)[^0-9]([0-9]+)$/) { # funky - +		for (my $count = $1; $count <= $2; $count++) { +		    push (@mpages, "<phrase role=\"$pageno\">$count</phrase>"); +		} +	    } else { +		push (@mpages, $page); +	    } +	} +	@pages = sort rangesort @mpages; +    } + +    # Remove duplicates... +    if ($#pages > 0) { +	my @mpages = (); +	my $current = ""; +	foreach my $page (@pages) { +	    my $pageno = &pageno($page); +	    if ($pageno ne $current) { +		push (@mpages, $page); +		$current = $pageno; +	    } +	} +	@pages = @mpages; +    } + +    # Collapse ranges... +    if ($#pages > 1) { +	my @cpages = (); +	while (@pages) { +	    my $count = 0; +	    my $len = &rangelen($count, @pages); +	    if ($len <= 2) { +		my $page = shift @pages; +		push (@cpages, $page); +	    } else { +		my $fpage = shift @pages; +		my $lpage = ""; +		while ($len > 1) { +		    $lpage = shift @pages; +		    $len--; +		} +		my $fpno = &pageno($fpage); +		my $lpno = &pageno($lpage); +		$fpage =~ s/>$fpno</>${fpno}-$lpno</s; +		push (@cpages, $fpage); +	    } +	} +	@pages = @cpages; +    } + +    my $page = shift @pages; +    $page =~ s/\s*$//s; +    $cindex .= $page; +    while (@pages) { +	$page = shift @pages; +	$page =~ s/\s*$//s; +	$cindex .= ", $page"; +    } +} +$cindex .= $index; + +print "$cindex\n"; + +sub pageno { +    my $page = shift; + +    $page =~ s/^<phrase.*?>//; +    $page =~ s/^<link.*?>//; + +    return $1 if $page =~ /^([^<>]+)/; +    return "?"; +} + +sub rangesort { +    my $apno = &pageno($a); +    my $bpno = &pageno($b); + +    # Make sure roman pages come before arabic ones, otherwise sort them in order +    return -1 if ($apno !~ /^\d+/ && $bpno =~ /^\d+/); +    return  1 if ($apno =~ /^\d+/ && $bpno !~ /^\d+/); +    return $apno <=> $bpno; +} + +sub rangelen { +    my $count = shift; +    my @pages = @_; +    my $len = 1; +    my $inrange = 1; + +    my $current = &pageno($pages[$count]); +    while ($count < $#pages && $inrange) { +	$count++; +	my $next = &pageno($pages[$count]); +	if ($current + 1 eq $next) { +	    $current = $next; +	    $inrange = 1; +	    $len++; +	} else { +	    $inrange = 0; +	} +    } + +    return $len; +} diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/pi.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/pi.xsl.svn-base new file mode 100644 index 0000000..afcf558 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/pi.xsl.svn-base @@ -0,0 +1,1008 @@ +<?xml version='1.0'?> +<xsl:stylesheet +  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +  xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" +  xmlns:fo="http://www.w3.org/1999/XSL/Format" +  xmlns:xlink="http://www.w3.org/1999/xlink" +  exclude-result-prefixes="doc" +  version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<doc:reference xmlns=""><info><title>FO Processing Instruction Reference</title> +    <releaseinfo role="meta"> +      $Id$ +    </releaseinfo> +  </info> + +  <partintro id="partintro"> +    <title>Introduction</title> + +    <para>This is generated reference documentation for all +      user-specifiable processing instructions (PIs) in the DocBook +      XSL stylesheets for FO output. +      <note> +        <para>You add these PIs at particular points in a document to +          cause specific “exceptions†to formatting/output behavior. To +          make global changes in formatting/output behavior across an +          entire document, it’s better to do it by setting an +          appropriate stylesheet parameter (if there is one).</para> +      </note> +    </para> +  </partintro> +</doc:reference> + +<!-- ==================================================================== --> + +<doc:pi name="dbfo_background-color" xmlns=""> +  <refpurpose>Sets background color for an image</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo background-color</tag> PI before or +      after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>, +      <tag>imagedata</tag>, or <tag>videodata</tag> element) as a +      sibling to the element, to set a background color for the +      image.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo background-color="<replaceable>color</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>background-color="<replaceable>color</replaceable>"</term> +        <listitem> +          <para>An HTML color value</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="BGcolor.html" +        >Background color</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_background-color"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'background-color'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_bgcolor" xmlns=""> +  <refpurpose>Sets background color on a table row or table cell</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo bgcolor</tag> PI as child of a table row +      or cell to set a background color for that table row or cell.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo bgcolor="<replaceable>color</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term> +        <listitem> +          <para>An HTML color value</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="BGtableColor.html#CellBGColor" +        >Cell background color</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_bgcolor"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'bgcolor'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_float-type" xmlns=""> +  <refpurpose>Specifies float behavior for a sidebar</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo float-type</tag> PI to specify the float +      behavior for a <tag>sidebar</tag> (to cause the sidebar to be +      displayed as a marginal note).</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo float-type="margin.note"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>float-type="margin.note"</term> +        <listitem> +          <para>Specifies that the <tag>sidebar</tag> should be +            displayed as a marginal note.</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>sidebar.float.type parameter</parameter>, +      <parameter>sidebar.float.width parameter</parameter>,  +      <parameter>sidebar.properties attribute-set</parameter>, +      <parameter>sidebar.title.properties</parameter> +    </para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="SideFloats.html#SidebarFloats" >A sidebar as +        side float</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_float-type"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'float-type'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_glossary-presentation" xmlns=""> +  <refpurpose>Specifies presentation style for a glossary</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo glossary-presentation</tag> PI as a child of +      a <tag>glossary</tag> to control its presentation style.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo glossary-presentation="list"|"blocks"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>glossary-presentation="list"</term> +        <listitem> +          <para>Displays the glossary as a list</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>glossary-presentation="blocks"</term> +        <listitem> +          <para>Displays the glossary as blocks</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>glossary.as.blocks</parameter></para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="Glossaries.html#GlossaryFormatPrint" >Glossary +        formatting in print</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_glossary-presentation"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'glossary-presentation'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_glosslist-presentation" xmlns=""> +  <refpurpose>Specifies presentation style for a glosslist</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo glosslist-presentation</tag> PI as a child of +      a <tag>glosslist</tag> to control its presentation style.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo glosslist-presentation="list"|"blocks"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>glosslist-presentation="list"</term> +        <listitem> +          <para>Displays the glosslist as a list</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>glosslist-presentation="blocks"</term> +        <listitem> +          <para>Displays the glosslist as blocks</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>glosslist.as.blocks</parameter> </para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="Glossaries.html#GlossaryFormatPrint" >Glossary +        formatting in print</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_glosslist-presentation"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'glosslist-presentation'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_glossterm-width" xmlns=""> +  <refpurpose>Specifies the glossterm width for a glossary or +    glosslist</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo glossterm-width</tag> PI as a child of a +      <tag>glossary</tag> or <tag>glosslist</tag> to specify the +      width for output of <tag>glossterm</tag> instances in the +      output.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo glossterm-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>glossterm-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the glossterm width (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>glossterm.width</parameter>, +      <parameter>glossterm.separation</parameter> +    </para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="Glossaries.html#GlossaryFormatPrint" >Glossary +        formatting in print</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_glossterm-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'glossterm-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_keep-together" xmlns=""> +  <refpurpose>Specifies “keep†behavior for a table, example, +    figure, or equation</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo keep-together</tag> PI as a child of a +      formal object (<tag>table</tag>, <tag>example</tag>, +      <tag>figure</tag>, or <tag>equation</tag>) or their informal +      equivalents) to specify “keep†behavior for the object (to +      allow the object to “break†across a page).</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo keep-together="auto"|"always"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>keep-together="auto"</term> +        <listitem> +          <para>Enables the object to break across a page</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>keep-together="always"</term> +        <listitem> +          <para>Prevents the object from breaking across a page (the +            default stylesheet behavior)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para>formal.object.properties</para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="PageBreaking.html#KeepTogetherPI" +        >Keep-together processing instruction</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_keep-together"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'keep-together'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_label-width" xmlns=""> +  <refpurpose>Specifies the label width for a qandaset</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo 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">dbfo label-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>label-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the label width (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="QandAformat.html" +        >Q and A formatting</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_label-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'label-width'"/> +  </xsl:call-template> +</xsl:template>  + +<doc:pi name="dbfo_linenumbering.everyNth" xmlns=""> +  <refpurpose>Specifies interval for lines numbers in verbatims</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo linenumbering.everyNth</tag> PI as a child +      of a “verbatim†element – <tag>programlisting</tag>, +      <tag>screen</tag>, <tag>synopsis</tag> — to specify +      the interval at which lines are numbered.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term> +        <listitem> +          <para>Specifies numbering interval; a number is output +            before every <replaceable>N</replaceable>th line</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>linenumbering.everyNth</parameter></para> +  </refsee> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="AnnotateListing.html#LineNumbering" +        >Line numbering</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_linenumbering.everyNth"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'linenumbering.everyNth'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_linenumbering.separator" xmlns=""> +  <refpurpose>Specifies separator text for line numbers in verbatims</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo linenumbering.separator</tag> PI as a child +      of a “verbatim†element – <tag>programlisting</tag>, +      <tag>screen</tag>, <tag>synopsis</tag> — to specify +      the separator text output between the line numbers and content.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term> +        <listitem> +          <para>Specifies the text (zero or more characters)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>linenumbering.separator</parameter></para> +  </refsee> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="AnnotateListing.html#LineNumbering" +        >Line numbering</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_linenumbering.separator"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'linenumbering.separator'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_linenumbering.width" xmlns=""> +  <refpurpose>Specifies width for line numbers in verbatims</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo linenumbering.width</tag> PI as a child +      of a “verbatim†element – <tag>programlisting</tag>, +      <tag>screen</tag>, <tag>synopsis</tag> — to specify +      the width set aside for line numbers.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the width (inluding units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>linenumbering.width</parameter></para> +  </refsee> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="AnnotateListing.html#LineNumbering" +        >Line numbering</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_linenumbering.width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'linenumbering.width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_list-presentation" xmlns=""> +  <refpurpose>Specifies presentation style for a variablelist or +    segmentedlist</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo list-presentation</tag> PI as a child of +      a <tag>variablelist</tag> or <tag>segmentedlist</tag> to +      control the presentation style for the list (to cause it, for +      example, to be displayed as a table).</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo list-presentation="list"|"blocks"|"table"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>list-presentation="list"</term> +        <listitem> +          <para>Displays the list as a list</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>list-presentation="blocks"</term> +        <listitem> +          <para>(<tag>variablelist</tag> only) Displays the list as blocks</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>list-presentation="table"</term> +        <listitem> +          <para>(<tag>segmentedlist</tag> only) Displays the list as a table</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <itemizedlist> +      <listitem> +        <para><parameter>variablelist.as.blocks</parameter></para> +      </listitem> +      <listitem> +        <para><parameter>variablelist.as.table</parameter></para> +      </listitem> +    </itemizedlist> +  </refsee> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="Variablelists.html#ListIndents" +        >Variable list formatting in print</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_list-presentation"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'list-presentation'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_list-width" xmlns=""> +  <refpurpose>Specifies the width of a horizontal simplelist</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo list-width</tag> PI as a child of a +      <tag>simplelist</tag> whose <tag class="attribute">class</tag> +      value is <literal>horizontal</literal>, to specify the width +      of the <tag>simplelist</tag>.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo list-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>list-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the <tag>simplelist</tag> width (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +</doc:pi> +<xsl:template name="pi.dbfo_list-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'list-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_orientation" xmlns=""> +  <refpurpose>Specifies the orientation for table row or cell</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo orientation</tag> PI as a child of an +      <tag>table</tag> row or cell to specify the orientation +      (rotation) for the row or cell.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</term> +        <listitem> +          <para>Specifies the number of degrees by which the cell or +            row is rotated</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +</doc:pi> +<xsl:template name="pi.dbfo_orientation"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'orientation'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_pgwide" xmlns=""> +  <refpurpose>Specifies if an <tag>equation</tag> or <tag>example</tag> goes across full page width</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo pgwide</tag> PI as a child of an +      <tag>equation</tag> or <tag>example</tag> to specify that the +      content should rendered across the full width of the page.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo pgwide="0"|"1"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>pgwide="0"</term> +        <listitem> +          <para>If zero, the content is rendered across the current +            text flow</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>pgwide="1"</term> +        <listitem> +          <para>If <code>1</code> (or any non-zero value), the +            content is rendered across the full width of the page</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>pgwide.properties</parameter></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_pgwide"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'pgwide'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_rotated-width" xmlns=""> +  <refpurpose>Specifies the width for a table <tag>entry</tag> or +    <tag>row</tag></refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo rotated-width</tag> PI as a child of an +      <tag>entry</tag> or <tag>row</tag> instance to specify the +      width of that the <tag>entry</tag> or <tag>row</tag>; or +      use it higher up in table to cause the width to be inherited +      recursively down.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo rotated-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>rotated-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the width of a row or cell (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +</doc:pi> +<xsl:template name="pi.dbfo_rotated-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'rotated-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_sidebar-width" xmlns=""> +  <refpurpose>Specifies the width of a sidebar</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo sidebar-width</tag> PI as a child of a +      <tag>sidebar</tag> to specify the width of the sidebar.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo sidebar-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>sidebar-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the <tag>sidebar</tag> width (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>sidebar.float.type parameter</parameter>, +      <parameter>sidebar.float.width parameter</parameter>,  +      <parameter>sidebar.properties attribute-set</parameter>, +      <parameter>sidebar.title.properties</parameter> +    </para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="SideFloats.html#SidebarFloats" >A sidebar as +        side float</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_sidebar-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'sidebar-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_start" xmlns=""> +  <refpurpose>(obsolete) Sets the starting number on an ordered list</refpurpose> +  <refdescription> +    <para><emphasis>This PI is obsolete</emphasis>. The intent of +      it was to provide a means for setting a specific starting +      number for an ordered list. Instead of this PI, set a value +      for the <literal>override</literal> attribute on the first +      <tag>listitem</tag> in the list; that will have the same +      effect as what this PI was intended for.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo start="<replaceable>character</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>start="<replaceable>character</replaceable>"</term> +        <listitem> +          <para>Specifies the character to use as the starting +            number; use 0-9, a-z, A-Z, or lowercase or uppercase +            Roman numerals</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="Orderedlists.html#ListStartNum" +        >List starting number</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_start"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="pi-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'start'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_table-width" xmlns=""> +  <refpurpose>Specifies the width for a table or for revhistory +    output</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo table-width</tag> PI as a child or +      sibling of a <tag>table</tag>, or as a child of an +      <tag>informaltable</tag>, <tag>entrybl</tag>, or +      <tag>revhistory</tag> instance (which is rendered as a table +      in output) to specify the width of the table in output.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo table-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>table-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the table width (including units or as a percentage)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="Tables.html#TableWidth" +        >Table width</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_table-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'table-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_term-width" xmlns=""> +  <refpurpose>Specifies the term width for a variablelist</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo term-width</tag> PI as a child of a +      <tag>variablelist</tag> to specify the width for +      <tag>term</tag> output.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo term-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>term-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the term width (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="Variablelists.html#ListIndents" +        >Variable list formatting in print</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_term-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'term-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_toc" xmlns=""> +  <refpurpose>Specifies whether a TOC should be generated for a qandaset</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo toc</tag> PI as a child of a +      <tag>qandaset</tag> to specify whether a table of contents +      (TOC) is generated for the <tag>qandaset</tag>.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo toc="0"|"1"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>toc="0"</term> +        <listitem> +          <para>If zero, no TOC is generated</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>toc="1"</term> +        <listitem> +          <para>If <code>1</code> (or any non-zero value), +            a TOC is generated</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="QandAtoc.html" +        >Q and A list of questions</link>, +      <link role="tcg" +        xlink:href="QandAformat.html" +        >Q and A formatting</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_toc"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'toc'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo-need" xmlns=""> +  <refpurpose>Specify a need for space (a kind of soft page break)</refpurpose> +  <refdescription> +    <para>A “need†is a request for space on a page.  If the +      requested space is not available, the page breaks and the +      content that follows the need request appears on the next +      page. If the requested space is available, then no page break +      is inserted.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo-need height="<replaceable>n</replaceable>" [space-before="<replaceable>n</replaceable>"]</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>height="<replaceable>n</replaceable>"</term> +        <listitem> +          <para>The amount of height needed (including units)</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>space-before="<replaceable>n</replaceable>"</term> +        <listitem> +          <para>The amount of extra vertical space to add (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="PageBreaking.html#SoftPageBreaks" +        >Soft page breaks</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo-need"> +  <xsl:variable name="pi-height"> +    <xsl:call-template name="dbfo-attribute"> +      <xsl:with-param name="pis" select="."/> +      <xsl:with-param name="attribute" select="'height'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="height"> +    <xsl:choose> +      <xsl:when test="$pi-height != ''"> +        <xsl:value-of select="$pi-height"/> +      </xsl:when> +      <xsl:otherwise>0pt</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="pi-before"> +    <xsl:call-template name="dbfo-attribute"> +      <xsl:with-param name="pis" select="."/> +      <xsl:with-param name="attribute" select="'space-before'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="spacer"> +    <fo:block-container width="100%" height="{$height}"> +      <fo:block><fo:leader leader-length="0pt"/></fo:block> +    </fo:block-container> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0"> +      <!-- Doesn't work in fop --> +    </xsl:when> +    <xsl:when test="$pi-before != '' and +      not(following-sibling::listitem) and +      not(following-sibling::step)"> +      <fo:block space-after="0pt" space-before="{$pi-before}"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="following-sibling::para"> +      <fo:block space-after="0pt"  +        xsl:use-attribute-sets="normal.para.spacing"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="following-sibling::table or +      following-sibling::figure or +      following-sibling::example or +      following-sibling::equation"> +      <fo:block space-after="0pt"  +        xsl:use-attribute-sets="formal.object.properties"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="following-sibling::informaltable or +      following-sibling::informalfigure or +      following-sibling::informalexample or +      following-sibling::informalequation"> +      <fo:block space-after="0pt"  +        xsl:use-attribute-sets="informal.object.properties"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="following-sibling::itemizedlist or +      following-sibling::orderedlist or +      following-sibling::variablelist or +      following-sibling::simplelist"> +      <fo:block space-after="0pt"  +        xsl:use-attribute-sets="informal.object.properties"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="following-sibling::listitem or +      following-sibling::step"> +      <fo:list-item space-after="0pt"  +        xsl:use-attribute-sets="informal.object.properties"> +        <fo:list-item-label/> +        <fo:list-item-body start-indent="0pt" end-indent="0pt"> +          <xsl:copy-of select="$spacer"/> +        </fo:list-item-body> +      </fo:list-item> +    </xsl:when> +    <xsl:when test="following-sibling::sect1 or +      following-sibling::sect2 or +      following-sibling::sect3 or +      following-sibling::sect4 or +      following-sibling::sect5 or +      following-sibling::section"> +      <fo:block space-after="0pt"  +        xsl:use-attribute-sets="section.title.properties"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block space-after="0pt" space-before="0em"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0"> +      <!-- Doesn't work in fop --> +    </xsl:when> +    <xsl:when test="following-sibling::listitem or +      following-sibling::step"> +      <fo:list-item space-before.precedence="force" +        space-before="-{$height}" +        space-after="0pt" +        space-after.precedence="force"> +        <fo:list-item-label/> +        <fo:list-item-body start-indent="0pt" end-indent="0pt"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:block space-before.precedence="force" +        space-before="-{$height}" +        space-after="0pt" +        space-after.precedence="force"> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="dbfo-attribute"> +  <!-- * dbfo-attribute is an interal utility template for retrieving --> +  <!-- * pseudo-attributes/parameters from PIs --> +  <xsl:param name="pis" select="processing-instruction('dbfo')"/> +  <xsl:param name="attribute">filename</xsl:param> +  <xsl:call-template name="pi-attribute"> +    <xsl:with-param name="pis" select="$pis"/> +    <xsl:with-param name="attribute" select="$attribute"/> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="processing-instruction()"> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="processing-instruction('dbfo-need')"> +  <xsl:call-template name="pi.dbfo-need"/> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/profile-docbook.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/profile-docbook.xsl.svn-base new file mode 100644 index 0000000..5778e40 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/profile-docbook.xsl.svn-base @@ -0,0 +1,284 @@ +<?xml version="1.0" encoding="US-ASCII"?> +<!--This file was created automatically by xsl2profile--> +<!--from the DocBook XSL stylesheets.--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="db ng exsl exslt" version="1.0"> + +<!-- It is important to use indent="no" here, otherwise verbatim --> +<!-- environments get broken by indented tags...at least when the --> +<!-- callout extension is used...at least with some processors --> +<xsl:output method="xml" indent="no"/> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:include href="../VERSION"/> +<xsl:include href="param.xsl"/> +<xsl:include href="../lib/lib.xsl"/> +<xsl:include href="../common/l10n.xsl"/> +<xsl:include href="../common/common.xsl"/> +<xsl:include href="../common/utility.xsl"/> +<xsl:include href="../common/labels.xsl"/> +<xsl:include href="../common/titles.xsl"/> +<xsl:include href="../common/subtitles.xsl"/> +<xsl:include href="../common/gentext.xsl"/> +<xsl:include href="../common/olink.xsl"/> +<xsl:include href="../common/targets.xsl"/> +<xsl:include href="../common/pi.xsl"/> +<xsl:include href="autotoc.xsl"/> +<xsl:include href="autoidx.xsl"/> +<xsl:include href="lists.xsl"/> +<xsl:include href="callout.xsl"/> +<xsl:include href="verbatim.xsl"/> +<xsl:include href="graphics.xsl"/> +<xsl:include href="xref.xsl"/> +<xsl:include href="formal.xsl"/> +<xsl:include href="table.xsl"/> +<xsl:include href="htmltbl.xsl"/> +<xsl:include href="sections.xsl"/> +<xsl:include href="inline.xsl"/> +<xsl:include href="footnote.xsl"/> +<xsl:include href="fo.xsl"/> +<xsl:include href="fo-rtf.xsl"/> +<xsl:include href="info.xsl"/> +<xsl:include href="keywords.xsl"/> +<xsl:include href="division.xsl"/> +<xsl:include href="index.xsl"/> +<xsl:include href="toc.xsl"/> +<xsl:include href="refentry.xsl"/> +<xsl:include href="math.xsl"/> +<xsl:include href="admon.xsl"/> +<xsl:include href="component.xsl"/> +<xsl:include href="biblio.xsl"/> +<xsl:include href="biblio-iso690.xsl"/> +<xsl:include href="glossary.xsl"/> +<xsl:include href="block.xsl"/> +<xsl:include href="task.xsl"/> +<xsl:include href="qandaset.xsl"/> +<xsl:include href="synop.xsl"/> +<xsl:include href="titlepage.xsl"/> +<xsl:include href="titlepage.templates.xsl"/> +<xsl:include href="pagesetup.xsl"/> +<xsl:include href="pi.xsl"/> +<xsl:include href="spaces.xsl"/> +<xsl:include href="ebnf.xsl"/> +<xsl:include href="../html/chunker.xsl"/> +<xsl:include href="annotations.xsl"/> +<xsl:include href="../common/stripns.xsl"/> + +<xsl:include href="fop.xsl"/> +<xsl:include href="fop1.xsl"/> +<xsl:include href="passivetex.xsl"/> +<xsl:include href="xep.xsl"/> +<xsl:include href="axf.xsl"/> +<xsl:include href="ptc.xsl"/> + +<xsl:param name="stylesheet.result.type" select="'fo'"/> + +<!-- ==================================================================== --> + +<xsl:key name="id" match="*" use="@id|@xml:id"/> + +<!-- ==================================================================== --> + +<xsl:template match="*"> +  <xsl:message> +    <xsl:value-of select="name(.)"/> +    <xsl:text> encountered</xsl:text> +    <xsl:if test="parent::*"> +      <xsl:text> in </xsl:text> +      <xsl:value-of select="name(parent::*)"/> +    </xsl:if> +    <xsl:text>, but no template matches.</xsl:text> +  </xsl:message> +  <fo:block color="red"> +    <xsl:text><</xsl:text> +    <xsl:value-of select="name(.)"/> +    <xsl:text>></xsl:text> +    <xsl:apply-templates/>  +    <xsl:text></</xsl:text> +    <xsl:value-of select="name(.)"/> +    <xsl:text>></xsl:text> +  </fo:block> +</xsl:template> + +<!-- Update this list if new root elements supported --> +<xsl:variable name="root.elements" select="' appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex '"/> + +<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/"> +  <!-- * Get a title for current doc so that we let the user --> +  <!-- * know what document we are processing at this point. --> +  <xsl:variable name="doc.title"> +    <xsl:call-template name="get.doc.title"/> +  </xsl:variable> +  <xsl:choose> +    <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document, +         toss the namespace and continue.  Use the docbook5 namespaced +         stylesheets for DocBook5 if you don't want to use this feature.--> +    <!-- 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:variable name="root.element" select="key('id', $rootid)"/> +          <xsl:choose> +            <xsl:when test="count($root.element) = 0"> +              <xsl:message terminate="yes"> +                <xsl:text>ID '</xsl:text> +                <xsl:value-of select="$rootid"/> +                <xsl:text>' not found in document.</xsl:text> +              </xsl:message> +            </xsl:when> +            <xsl:when test="not(contains($root.elements, concat(' ', local-name($root.element), ' ')))"> +              <xsl:message terminate="yes"> +                <xsl:text>ERROR: Document root element ($rootid=</xsl:text> +                <xsl:value-of select="$rootid"/> +                <xsl:text>) for FO output </xsl:text> +                <xsl:text>must be one of the following elements:</xsl:text> +                <xsl:value-of select="$root.elements"/> +              </xsl:message> +            </xsl:when> +            <!-- Otherwise proceed --> +            <xsl:otherwise> +              <xsl:if test="$collect.xref.targets = 'yes' or                             $collect.xref.targets = 'only'"> +                <xsl:apply-templates select="$root.element" mode="collect.targets"/> +              </xsl:if> +              <xsl:if test="$collect.xref.targets != 'only'"> +                <xsl:apply-templates select="$root.element" mode="process.root"/> +              </xsl:if> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <!-- Otherwise process the document root element --> +        <xsl:otherwise> +          <xsl:variable name="document.element" select="*[1]"/> +          <xsl:choose> +            <xsl:when test="not(contains($root.elements,                      concat(' ', local-name($document.element), ' ')))"> +              <xsl:message terminate="yes"> +                <xsl:text>ERROR: Document root element for FO output </xsl:text> +                <xsl:text>must be one of the following elements:</xsl:text> +                <xsl:value-of select="$root.elements"/> +              </xsl:message> +            </xsl:when> +            <!-- Otherwise proceed --> +            <xsl:otherwise> +              <xsl:if test="$collect.xref.targets = 'yes' or                             $collect.xref.targets = 'only'"> +                <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/> +              </xsl:if> +              <xsl:if test="$collect.xref.targets != 'only'"> +                <xsl:apply-templates select="$profiled-nodes" mode="process.root"/> +              </xsl:if> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="process.root"> +  <xsl:variable name="document.element" select="self::*"/> + +  <xsl:call-template name="root.messages"/> + +  <xsl:variable name="title"> +    <xsl:choose> +      <xsl:when test="$document.element/title[1]"> +        <xsl:value-of select="$document.element/title[1]"/> +      </xsl:when> +      <xsl:otherwise>[could not find document title]</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +   +  <!-- Include all id values in XEP output --> +  <xsl:if test="$xep.extensions != 0"> +    <xsl:processing-instruction name="xep-pdf-drop-unused-destinations">false</xsl:processing-instruction> +  </xsl:if> + +  <fo:root xsl:use-attribute-sets="root.properties"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"> +        <xsl:with-param name="target" select="/*[1]"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:if test="$xep.extensions != 0"> +      <xsl:call-template name="xep-pis"/> +      <xsl:call-template name="xep-document-information"/> +    </xsl:if> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:call-template name="axf-document-information"/> +    </xsl:if> + +    <xsl:call-template name="setup.pagemasters"/> + +    <xsl:if test="$fop.extensions != 0"> +      <xsl:apply-templates select="$document.element" mode="fop.outline"/> +    </xsl:if> + +    <xsl:if test="$fop1.extensions != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element" mode="fop1.outline"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <fo:bookmark-tree> +          <xsl:copy-of select="$bookmarks"/> +        </fo:bookmark-tree> +      </xsl:if> +    </xsl:if> + +    <xsl:if test="$xep.extensions != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element" mode="xep.outline"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions"> +          <xsl:copy-of select="$bookmarks"/> +        </rx:outline> +      </xsl:if> +    </xsl:if> + +    <xsl:if test="$arbortext.extensions != 0 and $ati.xsl11.bookmarks != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element" mode="ati.xsl11.bookmarks"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <fo:bookmark-tree> +          <xsl:copy-of select="$bookmarks"/> +        </fo:bookmark-tree> +      </xsl:if> +    </xsl:if> + +    <xsl:apply-templates select="$document.element"/> +  </fo:root> +</xsl:template> + +<xsl:template name="root.messages"> +  <!-- redefine this any way you'd like to output messages --> +  <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE --> +  <xsl:message> +    <xsl:text>Making </xsl:text> +    <xsl:value-of select="$page.orientation"/> +    <xsl:text> pages on </xsl:text> +    <xsl:value-of select="$paper.type"/> +    <xsl:text> paper (</xsl:text> +    <xsl:value-of select="$page.width"/> +    <xsl:text>x</xsl:text> +    <xsl:value-of select="$page.height"/> +    <xsl:text>)</xsl:text> +  </xsl:message> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/ptc.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/ptc.xsl.svn-base new file mode 100644 index 0000000..f3e25e3 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/ptc.xsl.svn-base @@ -0,0 +1,76 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +		xmlns:fo="http://www.w3.org/1999/XSL/Format" +		version="1.0"> + +<!-- ================================================================ --> +<!--                                                                  --> +<!-- PTC/Arbortext Code for XSL 1.1 bookmark support                  --> +<!--                                                                  --> +<!-- ================================================================ --> + +<xsl:param name="ati.xsl11.bookmarks" select="1"/> + +<xsl:variable name="ati-a-dia" select= +"'āăąćĉċčďđēĕėęěœĝğġģĥħĩīĭįıĵķĺļľŀłńņňŋōŏőŕŗřśŝşšţťŧũūŭůűųŵŷźżžĀĂĄĆĈĊČĎĐĒĔĖĘĚŒĜĞĠĢĤĦĨĪĬĮİĴĶĹĻĽĿŁŃŅŇŊŌŎŐŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽ'"/> + +<xsl:variable name="ati-a-asc" select= +"'aaaccccddeeeeeegggghhiiiiijklllllnnnnooorrrsssstttuuuuuuwyzzzAAACCCCDDEEEEEEGGGGHHIIIIIJKLLLLLNNNNOOORRRSSSSTTTUUUUUUWYYZZZ'"/> + +<xsl:template match="*" mode="ati.xsl11.bookmarks"> +  <xsl:apply-templates select="*" mode="ati.xsl11.bookmarks"/> +</xsl:template> + +<xsl:template match="set|book|part|reference|preface|chapter|appendix|article +                     |glossary|bibliography|index|setindex +                     |refentry +                     |sect1|sect2|sect3|sect4|sect5|section" +              mode="ati.xsl11.bookmarks"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="bookmark-label"> +    <xsl:apply-templates select="." mode="object.title.markup"/> +  </xsl:variable> + +  <!-- Put the root element bookmark at the same level as its children --> +  <!-- If the object is a set or book, generate a bookmark for the toc --> + +  <xsl:choose> +    <xsl:when test="parent::*"> +      <fo:bookmark internal-destination="{$id}"> +        <fo:bookmark-title> +          <xsl:value-of select="translate($bookmark-label, $ati-a-dia, $ati-a-asc)"/> +        </fo:bookmark-title> +        <xsl:apply-templates select="*" mode="ati.xsl11.bookmarks"/> +      </fo:bookmark> +    </xsl:when> +    <xsl:otherwise> +      <fo:bookmark internal-destination="{$id}"> +        <fo:bookmark-title> +          <xsl:value-of select="translate($bookmark-label, $ati-a-dia, $ati-a-asc)"/> +        </fo:bookmark-title> +      </fo:bookmark> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:if test="contains($toc.params, 'toc') +                    and section|sect1|refentry +                        |article|bibliography|glossary +                        |appendix"> +        <fo:bookmark internal-destination="toc...{$id}"> +          <fo:bookmark-title> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'TableofContents'"/> +            </xsl:call-template> +          </fo:bookmark-title> +        </fo:bookmark> +      </xsl:if> +      <xsl:apply-templates select="*" mode="ati.xsl11.bookmarks"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/qandaset.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/qandaset.xsl.svn-base new file mode 100644 index 0000000..a29692f --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/qandaset.xsl.svn-base @@ -0,0 +1,393 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="qandaset" name="process.qandaset"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="label-width"> +    <xsl:call-template name="pi.dbfo_label-width"/> +  </xsl:variable> + +  <xsl:variable name="label-length"> +    <xsl:choose> +      <xsl:when test="$label-width != ''"> +        <xsl:value-of select="$label-width"/> +      </xsl:when> +      <xsl:when test="descendant::label"> +        <xsl:call-template name="longest.term"> +          <xsl:with-param name="terms" select="descendant::label"/> +          <xsl:with-param name="maxlength" select="20"/> +        </xsl:call-template> +        <xsl:text>em * 0.50</xsl:text> +      </xsl:when> +      <xsl:otherwise>2.5em</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +   +  <xsl:variable name="toc"> +    <xsl:call-template name="pi.dbfo_toc"/> +  </xsl:variable> + +  <xsl:variable name="toc.params"> +    <xsl:call-template name="find.path.params"> +      <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="content"> +    <fo:block id="{$id}"> +      <xsl:choose> +        <xsl:when test="parent::*"> +          <xsl:if test="blockinfo/title|info/title|title"> +            <xsl:apply-templates select="(blockinfo/title| +                                          info/title|title)[1]"/> +          </xsl:if> +        </xsl:when> +        <!-- If it is the root element --> +        <xsl:otherwise> +          <xsl:call-template name="qandaset.titlepage"/> +        </xsl:otherwise> +      </xsl:choose> +   +      <xsl:if test="(contains($toc.params, 'toc') and $toc != '0')  +                    or $toc = '1'"> +        <xsl:call-template name="qandaset.toc"> +          <xsl:with-param name="toc.title.p" +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +      </xsl:if> + +      <xsl:call-template name="qandaset.toc.separator"/> + +      <xsl:apply-templates select="*[local-name(.) != 'title' +                                   and local-name(.) != 'titleabbrev' +                                   and local-name(.) != 'qandadiv' +                                   and local-name(.) != 'qandaentry']"/> +      <xsl:apply-templates select="qandadiv"/> +   +      <xsl:if test="qandaentry"> +        <fo:list-block xsl:use-attribute-sets="list.block.spacing" +                       provisional-label-separation="0.2em"> +          <xsl:attribute name="provisional-distance-between-starts"> +            <xsl:choose> +              <xsl:when test="$label-length != ''"> +                <xsl:value-of select="$label-length"/> +              </xsl:when> +              <xsl:otherwise>2.5em</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +          <xsl:apply-templates select="qandaentry"/> +        </fo:list-block> +      </xsl:if> +    </fo:block> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*"> +      <xsl:copy-of select="$content"/> +    </xsl:when> +    <!-- Otherwise create a page sequence --> +    <xsl:otherwise> +      <xsl:apply-templates select="." mode="page.sequence"> +        <xsl:with-param name="content" select="$content"/> +        <xsl:with-param name="master-reference" select="'body'"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +   +</xsl:template> + +<xsl:template match="qandaset/blockinfo/title|qandset/info/title|qandaset/title"> +  <xsl:variable name="enclsect" select="(ancestor::section +                                        | ancestor::simplesect +                                        | ancestor::sect5 +                                        | ancestor::sect4 +                                        | ancestor::sect3 +                                        | ancestor::sect2 +                                        | ancestor::sect1 +                                        | ancestor::refsect3 +                                        | ancestor::refsect2 +                                        | ancestor::refsect1)[last()]"/> +  <xsl:variable name="sectlvl"> +    <xsl:call-template name="section.level"> +      <xsl:with-param name="node" select="$enclsect"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="qanda.heading"> +    <xsl:with-param name="level" select="$sectlvl + 1"/> +    <xsl:with-param name="marker" select="0"/> +    <xsl:with-param name="title"> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="qandaset/blockinfo|qandaset/info"> +  <!-- what should this template really do? --> +  <xsl:apply-templates select="legalnotice" mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="qandadiv"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="label-width"> +    <xsl:call-template name="pi.dbfo_label-width"/> +  </xsl:variable> + +  <xsl:variable name="label-length"> +    <xsl:choose> +      <xsl:when test="$label-width != ''"> +        <xsl:value-of select="$label-width"/> +      </xsl:when> +      <xsl:when test="descendant::label"> +        <xsl:call-template name="longest.term"> +          <xsl:with-param name="terms" select="descendant::label"/> +          <xsl:with-param name="maxlength" select="20"/> +        </xsl:call-template> +        <xsl:text>*0.6em</xsl:text> +      </xsl:when> +      <xsl:otherwise>2.5em</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:apply-templates select="(blockinfo/title|info/title|title)[1]"/> +    <xsl:apply-templates select="*[local-name(.) != 'title' +                                 and local-name(.) != 'titleabbrev' +                                 and local-name(.) != 'qandadiv' +                                 and local-name(.) != 'qandaentry']"/> +    <fo:block> +      <xsl:apply-templates select="qandadiv"/> + +      <xsl:if test="qandaentry"> +        <fo:list-block xsl:use-attribute-sets="list.block.spacing" +                       provisional-label-separation="0.2em"> +          <xsl:attribute name="provisional-distance-between-starts"> +            <xsl:choose> +              <xsl:when test="$label-length != ''"> +                <xsl:value-of select="$label-length"/> +              </xsl:when> +              <xsl:otherwise>2.5em</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +          <xsl:apply-templates select="qandaentry"/> +        </fo:list-block> +      </xsl:if> +    </fo:block> +  </fo:block> +</xsl:template> + +<xsl:template match="qandadiv/blockinfo/title|qandadiv/info/title|qandadiv/title"> +  <xsl:variable name="enclsect" select="(ancestor::section +                                        | ancestor::simplesect +                                        | ancestor::sect5 +                                        | ancestor::sect4 +                                        | ancestor::sect3 +                                        | ancestor::sect2 +                                        | ancestor::sect1 +                                        | ancestor::refsect3 +                                        | ancestor::refsect2 +                                        | ancestor::refsect1)[last()]"/> +  <xsl:variable name="sectlvl"> +    <xsl:call-template name="section.level"> +      <xsl:with-param name="node" select="$enclsect"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="qanda.heading"> +    <xsl:with-param name="level"  select="$sectlvl + 1 + count(ancestor::qandadiv)"/> +    <xsl:with-param name="marker" select="0"/> +    <xsl:with-param name="title"> +      <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/> +      <xsl:if test="$qandadiv.autolabel != 0"> +        <xsl:apply-templates select="." mode="intralabel.punctuation"/> +        <xsl:text> </xsl:text> +      </xsl:if> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="qandaentry"> +  <!-- Omit revhistory from fo:list-block because it is a table --> +  <xsl:apply-templates select="question|answer"/> +</xsl:template> + +<xsl:template match="question"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="entry.id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="parent::*"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="deflabel"> +    <xsl: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.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> + +  <fo:list-item id="{$entry.id}" xsl:use-attribute-sets="list.item.spacing"> +    <fo:list-item-label id="{$id}" end-indent="label-end()"> +        <xsl:if test="string-length($label.content) > 0"> +			<fo:block font-weight="bold"> +			  <xsl:copy-of select="$label.content"/>           +			</fo:block> +        </xsl:if> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <xsl:choose> +        <xsl:when test="$deflabel = 'none' and not(label)"> +          <fo:block font-weight="bold"> +            <xsl:apply-templates select="*[local-name(.)!='label']"/> +          </fo:block> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="*[local-name(.)!='label']"/> +        </xsl:otherwise> +      </xsl:choose> +      <!-- Uncomment this line to get revhistory output in the question --> +      <!-- <xsl:apply-templates select="preceding-sibling::revhistory"/> --> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="answer"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> +  <xsl:variable name="entry.id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="parent::*"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="deflabel"> +    <xsl: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="answer.label"> +        <xsl:apply-templates select="." mode="label.markup"/> +      </xsl:variable> + +  <fo:list-item xsl:use-attribute-sets="list.item.spacing"> +    <fo:list-item-label id="{$id}" end-indent="label-end()"> +      <xsl:choose> +        <xsl:when test="string-length($answer.label) > 0"> +			<fo:block font-weight="bold"> +			  <xsl:copy-of select="$answer.label"/> +			</fo:block> +        </xsl:when> +        <xsl:otherwise> +			<fo:block/> +        </xsl:otherwise> +      </xsl:choose> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <xsl:apply-templates select="*[local-name(.)!='label' and local-name(.) != 'qandaentry']"/> +      <!-- * handle nested answer/qandaentry instances --> +      <!-- * (bug 1509043 from Daniel Leidert) --> +      <xsl:if test="descendant::question"> +        <xsl:call-template name="process.qandaset"/> +      </xsl:if> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="label"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template name="qanda.heading"> +  <xsl:param name="level" select="1"/> +  <xsl:param name="marker" select="0"/> +  <xsl:param name="title"/> +  <xsl:param name="titleabbrev"/> + +  <fo:block xsl:use-attribute-sets="qanda.title.properties"> +    <xsl:if test="$marker != 0"> +      <fo:marker marker-class-name="section.head.marker"> +        <xsl:choose> +          <xsl:when test="$titleabbrev = ''"> +            <xsl:value-of select="$title"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$titleabbrev"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:marker> +    </xsl:if> +    <xsl:choose> +      <xsl:when test="$level=1"> +        <fo:block xsl:use-attribute-sets="qanda.title.level1.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=2"> +        <fo:block xsl:use-attribute-sets="qanda.title.level2.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=3"> +        <fo:block xsl:use-attribute-sets="qanda.title.level3.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=4"> +        <fo:block xsl:use-attribute-sets="qanda.title.level4.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=5"> +        <fo:block xsl:use-attribute-sets="qanda.title.level5.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <fo:block xsl:use-attribute-sets="qanda.title.level6.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/refentry.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/refentry.xsl.svn-base new file mode 100644 index 0000000..7dfb9db --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/refentry.xsl.svn-base @@ -0,0 +1,637 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="reference"> +   <xsl:if test="not(partintro)"> +    <xsl:variable name="id"> +      <xsl:call-template name="object.id"/> +    </xsl:variable> +    <xsl:variable name="master-reference"> +      <xsl:call-template name="select.pagemaster"/> +    </xsl:variable> + +    <fo:page-sequence hyphenate="{$hyphenate}" +                      master-reference="{$master-reference}"> +      <xsl:attribute name="language"> +        <xsl:call-template name="l10n.language"/> +      </xsl:attribute> +      <xsl:attribute name="format"> +        <xsl:call-template name="page.number.format"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="initial-page-number"> +        <xsl:call-template name="initial.page.number"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="force-page-count"> +        <xsl:call-template name="force.page.count"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="hyphenation-character"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-character'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-push-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-remain-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:apply-templates select="." mode="running.head.mode"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:apply-templates> +      <xsl:apply-templates select="." mode="running.foot.mode"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:apply-templates> + +      <fo:flow flow-name="xsl-region-body"> +        <xsl:call-template name="set.flow.properties"> +          <xsl:with-param name="element" select="local-name(.)"/> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:call-template> + +        <fo:block id="{$id}"> +          <xsl:call-template name="reference.titlepage"/> +        </fo:block> +        <!-- Create one page sequence if no pagebreaks needed --> +        <xsl:if test="$refentry.pagebreak = 0"> +          <xsl:apply-templates select="refentry"/> +        </xsl:if> +      </fo:flow> +    </fo:page-sequence> +  </xsl:if> +  <xsl:apply-templates select="partintro"/> +  <xsl:if test="$refentry.pagebreak != 0"> +    <xsl:apply-templates select="refentry"/> +  </xsl:if> +</xsl:template> + +<xsl:template match="reference" mode="reference.titlepage.mode"> +  <xsl:call-template name="reference.titlepage"/> +</xsl:template> + +<xsl:template match="reference/partintro"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="ancestor::reference"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +      <fo:block id="{$id}"> +        <xsl:apply-templates select=".." mode="reference.titlepage.mode"/> +      </fo:block> +      <xsl:if test="title"> +        <xsl:call-template name="partintro.titlepage"/> +      </xsl:if> +      <xsl:apply-templates/> +      <!-- Create one page sequence if no pagebreaks needed --> +      <xsl:if test="$refentry.pagebreak = 0"> +        <xsl:apply-templates select="../refentry"/> +      </xsl:if> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="reference/docinfo|refentry/refentryinfo"></xsl:template> +<xsl:template match="reference/info"></xsl:template> +<xsl:template match="reference/title"></xsl:template> +<xsl:template match="reference/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="refentry"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <xsl:variable name="refentry.content"> +    <fo:block id="{$id}"> +      <xsl:apply-templates/> +    </fo:block> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="not(parent::*) or  +                    (parent::reference and $refentry.pagebreak != 0) or  +                    parent::part"> +      <!-- make a page sequence --> +      <fo:page-sequence hyphenate="{$hyphenate}" +                        master-reference="{$master-reference}"> +        <xsl:attribute name="language"> +          <xsl:call-template name="l10n.language"/> +        </xsl:attribute> +        <xsl:attribute name="format"> +          <xsl:call-template name="page.number.format"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> + +        <xsl:attribute name="initial-page-number"> +          <xsl:call-template name="initial.page.number"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> + +        <xsl:attribute name="force-page-count"> +          <xsl:call-template name="force.page.count"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> + +        <xsl:attribute name="hyphenation-character"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-character'"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="hyphenation-push-character-count"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="hyphenation-remain-character-count"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +          </xsl:call-template> +        </xsl:attribute> + +        <xsl:apply-templates select="." mode="running.head.mode"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:apply-templates> +        <xsl:apply-templates select="." mode="running.foot.mode"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:apply-templates> + +        <fo:flow flow-name="xsl-region-body"> +          <xsl:call-template name="set.flow.properties"> +            <xsl:with-param name="element" select="local-name(.)"/> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> + +          <xsl:copy-of select="$refentry.content"/> +        </fo:flow> +      </fo:page-sequence> +    </xsl:when> +    <xsl:otherwise> +      <fo:block> +        <xsl:if test="$refentry.pagebreak != 0"> +          <xsl:attribute name="break-before">page</xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$refentry.content"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="refmeta"> +</xsl:template> + +<xsl:template match="manvolnum"> +  <xsl:if test="$refentry.xref.manvolnum != 0"> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates/> +    <xsl:text>)</xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="refmiscinfo"> +</xsl:template> + +<xsl:template match="refentrytitle"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="refnamediv"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> + +    <!-- if refentry.generate.name is non-zero, then we need to generate a --> +    <!-- localized "Name" subheading for this refnamdiv (unless it has a --> +    <!-- preceding sibling that is a refnamediv, in which case we have already --> +    <!-- generated a "Name" subheading, so we don't need to do it again --> +    <xsl:if test="$refentry.generate.name != 0"> +        <xsl:choose> +          <xsl:when test="preceding-sibling::refnamediv"> +            <!-- no generated title on secondary refnamedivs! --> +          </xsl:when> +          <xsl:otherwise> +            <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" +                      xsl:use-attribute-sets="refnamediv.titlepage.recto.style" +                      font-family="{$title.fontset}"> +              <!-- Contents of what is now the format.refentry.subheading --> +              <!-- template were formerly intended to be used only to --> +              <!-- process those subsections of Refentry that have "real" --> +              <!-- title children. So as a kludge to get around the fact --> +              <!-- that the template still basically "expects" to be --> +              <!-- processing that kind of a node, when we call the --> +              <!-- template to process generated titles, we must call it --> +              <!-- with values for the "offset" and "section" parameters --> +              <!-- that are different from the default values in the --> +              <!-- format.refentry.subheading template itself. Because --> +              <!-- those defaults are the values appropriate for processing --> +              <!-- "real" title nodes. --> +              <xsl:call-template name="format.refentry.subheading"> +                <xsl:with-param name="section" select="self::*"/> +                <xsl:with-param name="offset" select="1"/> +                <xsl:with-param name="gentext.key" select="'RefName'"/> +              </xsl:call-template> +            </fo:block> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:if> + +      <xsl:if test="$refentry.generate.title != 0"> +  <xsl:variable name="section.level"> +    <xsl:call-template name="refentry.level"> +      <xsl:with-param name="node" select="ancestor::refentry"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="reftitle"> +        <xsl:choose> +          <xsl:when test="../refmeta/refentrytitle"> +            <xsl:apply-templates select="../refmeta/refentrytitle"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="refname[1]"/> +          </xsl:otherwise> +        </xsl:choose> +  </xsl:variable> + +  <!-- xsl:use-attribute-sets takes only a Qname, not a variable --> +    <xsl:choose> +      <xsl:when test="preceding-sibling::refnamediv"> +	<!-- no title on secondary refnamedivs! --> +      </xsl:when> +      <xsl:when test="$section.level = 1"> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level1.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:when> +      <xsl:when test="$section.level = 2"> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level2.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:when> +      <xsl:when test="$section.level = 3"> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level3.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:when> +      <xsl:when test="$section.level = 4"> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level4.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:when> +      <xsl:when test="$section.level = 5"> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level5.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level6.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:otherwise> +    </xsl:choose> +    </xsl:if> + +    <fo:block> +      <xsl:if test="not(following-sibling::refnamediv)"> +	<xsl:attribute name="space-after">1em</xsl:attribute> +      </xsl:if> +      <xsl:apply-templates/> +    </fo:block> +  </fo:block> +</xsl:template> + +<xsl:template match="refname"> +  <xsl:if test="not(preceding-sibling::refdescriptor)"> +    <xsl:apply-templates/> +    <xsl:if test="following-sibling::refname"> +      <xsl:text>, </xsl:text> +    </xsl:if> +  </xsl:if> +</xsl:template> + +<xsl:template match="refpurpose"> +  <xsl:if test="node()"> +    <xsl:text> </xsl:text> +    <xsl:call-template name="dingbat"> +      <xsl:with-param name="dingbat">em-dash</xsl:with-param> +    </xsl:call-template> +    <xsl:text> </xsl:text> +    <xsl:apply-templates/> +  </xsl:if> +</xsl:template> + +<xsl:template match="refdescriptor"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="refclass"> +  <xsl:if test="$refclass.suppress = 0"> +  <fo:block font-weight="bold"> +    <xsl:if test="@role"> +      <xsl:value-of select="@role"/> +      <xsl:text>: </xsl:text> +    </xsl:if> +    <xsl:apply-templates/> +  </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="refsynopsisdiv"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:if test="not(refsynopsisdivinfo/title|docinfo/title|info/title|title)"> +      <!-- * if we there is no appropriate title for this Refsynopsisdiv, --> +      <!-- * then we need to call format.refentry.subheading to generate one --> +      <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" +                font-family="{$title.fontset}"> +        <!-- Contents of what is now the format.refentry.subheading --> +        <!-- template were formerly intended to be used only to --> +        <!-- process those subsections of Refentry that have "real" --> +        <!-- title children. So as a kludge to get around the fact --> +        <!-- that the template still basically "expects" to be --> +        <!-- processing that kind of a node, when we call the --> +        <!-- template to process generated titles, we must call it --> +        <!-- with values for the "offset" and "section" parameters --> +        <!-- that are different from the default values in the --> +        <!-- format.refentry.subheading template itself. Because --> +        <!-- those defaults are the values appropriate for processing --> +        <!-- "real" title nodes. --> +        <xsl:call-template name="format.refentry.subheading"> +          <xsl:with-param name="section" select="parent::*"/> +          <xsl:with-param name="offset" select="1"/> +          <xsl:with-param name="gentext.key" select="'RefSynopsisDiv'"/> +        </xsl:call-template> +      </fo:block> +    </xsl:if> +    <xsl:call-template name="refsynopsisdiv.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="refsection"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="refsection.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="refsect1"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="refsect1.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="refsect2"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="refsect2.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="refsect3"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="refsect3.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="refsynopsisdiv/title +                     |refsection/title +                     |refsect1/title +                     |refsect2/title +                     |refsect3/title"> +  <!-- nop; titlepage.mode instead --> +</xsl:template> + +<xsl:template match="refsynopsisdiv/title +                     |refsection/title +                     |refsect1/title +                     |refsect2/title +                     |refsect3/title +                     |refsynopsisdiv/info/title +                     |refsection/info/title +                     |refsect1/info/title +                     |refsect2/info/title +                     |refsect3/info/title" +              mode="titlepage.mode" +              priority="2"> +  <xsl:call-template name="format.refentry.subheading"/> +</xsl:template> + +<xsl:template name="format.refentry.subheading"> +<!-- This template is now called to process generated titles for --> +<!-- Refnamediv and Refsynopsisdiv, as well as "real" titles for --> +<!-- Refsynopsisdiv, Refsection, and Refsect[1-3]. --> +<!-- --> +<!-- But the contents of this template were formerly intended to be used --> +<!-- only to process those subsections of Refentry that have "real" title --> +<!-- children. So as a kludge to get around the fact that the template --> +<!-- still basically "expects" to be processing that kind of a node, the --> +<!-- "offset" parameter was added and the "section" variable was changed to --> +<!-- a parameter so that when called for a generated title on a Refnamediv --> +<!-- or Refsynopsisdiv, we can call it like this: --> +<!-- --> +<!--     <xsl:call-template name="format.refentry.subheading"> --> +<!--       <xsl:with-param name="section" select="self::*"/> --> +<!--       <xsl:with-param name="offset" select="1"/> --> +<!--       <xsl:with-param name="gentext.key" select="'RefName'"/> --> +<!--     </xsl:call-template> --> +<!-- --> +  <xsl:param name="section"  +             select="(ancestor::refsynopsysdiv  +                     |ancestor::refsection +                     |ancestor::refsect1 +                     |ancestor::refsect2 +                     |ancestor::refsect3)[last()]"/> +  <xsl:param name="offset" select="0"/> +  <xsl:param name="gentext.key"/> + +  <fo:block keep-with-next.within-column="always"> +    <xsl:variable name="id"> +      <xsl:call-template name="object.id"> +        <xsl:with-param name="object" select="$section"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:variable name="level"> +      <xsl:call-template name="section.level"> +        <xsl:with-param name="node" select="$section"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:variable name="title"> +      <!-- If we have a non-empty value for the $gentext.key param, then we --> +      <!-- generate an appropriate title here. Otherwise, we have a real --> +      <!-- title child, so we copy contents of that to the result tree. --> +      <xsl:choose> +        <xsl:when test="$gentext.key != ''"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="$gentext.key"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="$section" mode="object.title.markup"> +            <xsl:with-param name="allow-anchors" select="1"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:variable> + +    <xsl:if test="$passivetex.extensions != 0"> +      <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"  +                      fotex-bookmark-level="{$level + 2 + $offset}"  +                      fotex-bookmark-label="{$id}"> +        <xsl:value-of select="$title"/> +      </fotex:bookmark> +    </xsl:if> + +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:outline-level"> +        <xsl:value-of select="count(ancestor::*)-1 + $offset"/> +      </xsl:attribute> +      <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +      <xsl:attribute name="axf:outline-title"> +        <xsl:value-of select="$title"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:call-template name="section.heading"> +      <xsl:with-param name="level" select="$level + $offset"/> +      <xsl:with-param name="title" select="$title"/> +    </xsl:call-template> +  </fo:block> +</xsl:template> + +<xsl:template match="refsectioninfo|refsection/info"></xsl:template> +<xsl:template match="refsect1info|refsect1/info"></xsl:template> +<xsl:template match="refsect2info|refsect2/info"></xsl:template> +<xsl:template match="refsect3info|refsect3/info"></xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/sections.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/sections.xsl.svn-base new file mode 100644 index 0000000..54d2bbe --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/sections.xsl.svn-base @@ -0,0 +1,764 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="section"> +  <xsl:choose> +    <xsl:when test="$rootid = @id or $rootid = @xml:id"> +      <xsl:call-template name="section.page.sequence"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"/> +      </xsl:variable> + +      <xsl:variable name="renderas"> +        <xsl:choose> +          <xsl:when test="@renderas = 'sect1'">1</xsl:when> +          <xsl:when test="@renderas = 'sect2'">2</xsl:when> +          <xsl:when test="@renderas = 'sect3'">3</xsl:when> +          <xsl:when test="@renderas = 'sect4'">4</xsl:when> +          <xsl:when test="@renderas = 'sect5'">5</xsl:when> +          <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="level"> +        <xsl:choose> +          <xsl:when test="$renderas != ''"> +            <xsl:value-of select="$renderas"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="section.level"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <!-- xsl:use-attribute-sets takes only a Qname, not a variable --> +      <xsl:choose> +        <xsl:when test="$level = 1"> +          <xsl:element name="fo:{$section.container.element}" +		       use-attribute-sets="section.level1.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:when> +        <xsl:when test="$level = 2"> +          <xsl:element name="fo:{$section.container.element}" +		       use-attribute-sets="section.level2.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:when> +        <xsl:when test="$level = 3"> +          <xsl:element name="fo:{$section.container.element}" +                       use-attribute-sets="section.level3.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:when> +        <xsl:when test="$level = 4"> +          <xsl:element name="fo:{$section.container.element}" +                       use-attribute-sets="section.level4.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:when> +        <xsl:when test="$level = 5"> +          <xsl:element name="fo:{$section.container.element}" +		       use-attribute-sets="section.level5.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:when> +        <xsl:otherwise> +          <xsl:element name="fo:{$section.container.element}" +		       use-attribute-sets="section.level6.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="section.content"> +  <xsl:call-template name="section.titlepage"/> + +  <xsl:variable name="toc.params"> +    <xsl:call-template name="find.path.params"> +      <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:if test="contains($toc.params, 'toc') +                and (count(ancestor::section)+1) <=  +		$generate.section.toc.level"> +    <xsl:call-template name="section.toc"> +      <xsl:with-param name="toc.title.p"  +                      select="contains($toc.params, 'title')"/> +    </xsl:call-template> +   <xsl:call-template name="section.toc.separator"/> +  </xsl:if> + +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="/section" name="section.page.sequence"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}"  +            xsl:use-attribute-sets="section.level1.properties"> +        <xsl:call-template name="section.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc') +                    and (count(ancestor::section)+1) <=  +		    $generate.section.toc.level"> +        <xsl:call-template name="section.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="section.toc.separator"/> +      </xsl:if> + +      <xsl:apply-templates/> +   </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="section/title +                     |simplesect/title +                     |sect1/title +                     |sect2/title +                     |sect3/title +                     |sect4/title +                     |sect5/title +                     |section/info/title +                     |simplesect/info/title +                     |sect1/info/title +                     |sect2/info/title +                     |sect3/info/title +                     |sect4/info/title +                     |sect5/info/title +                     |section/sectioninfo/title +                     |sect1/sect1info/title +                     |sect2/sect2info/title +                     |sect3/sect3info/title +                     |sect4/sect4info/title +                     |sect5/sect5info/title" +              mode="titlepage.mode" +              priority="2"> + +  <xsl:variable name="section"  +                select="(ancestor::section | +                        ancestor::simplesect | +                        ancestor::sect1 | +                        ancestor::sect2 | +                        ancestor::sect3 | +                        ancestor::sect4 | +                        ancestor::sect5)[position() = last()]"/> + +  <fo:block keep-with-next.within-column="always"> +    <xsl:variable name="id"> +      <xsl:call-template name="object.id"> +        <xsl:with-param name="object" select="$section"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:variable name="renderas"> +      <xsl:choose> +        <xsl:when test="$section/@renderas = 'sect1'">1</xsl:when> +        <xsl:when test="$section/@renderas = 'sect2'">2</xsl:when> +        <xsl:when test="$section/@renderas = 'sect3'">3</xsl:when> +        <xsl:when test="$section/@renderas = 'sect4'">4</xsl:when> +        <xsl:when test="$section/@renderas = 'sect5'">5</xsl:when> +        <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +   +    <xsl:variable name="level"> +      <xsl:choose> +        <xsl:when test="$renderas != ''"> +          <xsl:value-of select="$renderas"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="section.level"> +            <xsl:with-param name="node" select="$section"/> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:variable> + +    <xsl:variable name="marker"> +      <xsl:choose> +        <xsl:when test="$level <= $marker.section.level">1</xsl:when> +        <xsl:otherwise>0</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> + +    <xsl:variable name="title"> +      <xsl:apply-templates select="$section" mode="object.title.markup"> +        <xsl:with-param name="allow-anchors" select="1"/> +      </xsl:apply-templates> +    </xsl:variable> + +    <xsl:variable name="marker.title"> +      <xsl:apply-templates select="$section" mode="titleabbrev.markup"> +        <xsl:with-param name="allow-anchors" select="0"/> +      </xsl:apply-templates> +    </xsl:variable> + +    <xsl:if test="$passivetex.extensions != 0"> +      <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"  +                      fotex-bookmark-level="{$level + 2}"  +                      fotex-bookmark-label="{$id}"> +        <xsl:value-of select="$marker.title"/> +      </fotex:bookmark> +    </xsl:if> + +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:outline-level"> +        <xsl:value-of select="count(ancestor::*)-1"/> +      </xsl:attribute> +      <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +      <xsl:attribute name="axf:outline-title"> +        <xsl:value-of select="normalize-space($title)"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:call-template name="section.heading"> +      <xsl:with-param name="level" select="$level"/> +      <xsl:with-param name="title" select="$title"/> +      <xsl:with-param name="marker" select="$marker"/> +      <xsl:with-param name="marker.title" select="$marker.title"/> +    </xsl:call-template> +  </fo:block> +</xsl:template> + +<xsl:template match="sect1"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}" +               use-attribute-sets="section.level1.properties"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="sect1.titlepage"/> + +    <xsl:variable name="toc.params"> +      <xsl:call-template name="find.path.params"> +        <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:if test="contains($toc.params, 'toc') +                  and $generate.section.toc.level >= 1"> +      <xsl:call-template name="section.toc"> +        <xsl:with-param name="toc.title.p"  +                        select="contains($toc.params, 'title')"/> +      </xsl:call-template> +      <xsl:call-template name="section.toc.separator"/> +    </xsl:if> + +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="/sect1"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}"  +                xsl:use-attribute-sets="section.level1.properties"> +        <xsl:call-template name="sect1.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc') +                    and $generate.section.toc.level >= 1"> +        <xsl:call-template name="section.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="section.toc.separator"/> +      </xsl:if> + +      <xsl:apply-templates/> +   </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="sect2"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}" +	       use-attribute-sets="section.level2.properties"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="sect2.titlepage"/> + +    <xsl:variable name="toc.params"> +      <xsl:call-template name="find.path.params"> +        <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:if test="contains($toc.params, 'toc') +                   and $generate.section.toc.level >= 2"> +      <xsl:call-template name="section.toc"> +        <xsl:with-param name="toc.title.p"  +                        select="contains($toc.params, 'title')"/> +      </xsl:call-template> +      <xsl:call-template name="section.toc.separator"/> +    </xsl:if> + +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="sect3"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}" +	       use-attribute-sets="section.level3.properties"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="sect3.titlepage"/> + +    <xsl:variable name="toc.params"> +      <xsl:call-template name="find.path.params"> +        <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:if test="contains($toc.params, 'toc') +                  and $generate.section.toc.level >= 3"> +      <xsl:call-template name="section.toc"> +        <xsl:with-param name="toc.title.p"  +                        select="contains($toc.params, 'title')"/> +      </xsl:call-template> +      <xsl:call-template name="section.toc.separator"/> +    </xsl:if> + +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="sect4"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}" +	       use-attribute-sets="section.level4.properties"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="sect4.titlepage"/> + +    <xsl:variable name="toc.params"> +      <xsl:call-template name="find.path.params"> +        <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:if test="contains($toc.params, 'toc') +                  and $generate.section.toc.level >= 4"> +      <xsl:call-template name="section.toc"> +        <xsl:with-param name="toc.title.p"  +                        select="contains($toc.params, 'title')"/> +      </xsl:call-template> +      <xsl:call-template name="section.toc.separator"/> +    </xsl:if> + +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="sect5"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}" +	       use-attribute-sets="section.level5.properties"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="sect5.titlepage"/> + +    <xsl:variable name="toc.params"> +      <xsl:call-template name="find.path.params"> +        <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:if test="contains($toc.params, 'toc') +                  and $generate.section.toc.level >= 5"> +      <xsl:call-template name="section.toc"> +        <xsl:with-param name="toc.title.p"  +                        select="contains($toc.params, 'title')"/> +      </xsl:call-template> +      <xsl:call-template name="section.toc.separator"/> +    </xsl:if> + +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="simplesect"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="simplesect.titlepage"/> +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="sectioninfo"></xsl:template> +<xsl:template match="section/info"></xsl:template> +<xsl:template match="section/title"></xsl:template> +<xsl:template match="section/titleabbrev"></xsl:template> +<xsl:template match="section/subtitle"></xsl:template> + +<xsl:template match="sect1info"></xsl:template> +<xsl:template match="sect1/info"></xsl:template> +<xsl:template match="sect1/title"></xsl:template> +<xsl:template match="sect1/titleabbrev"></xsl:template> +<xsl:template match="sect1/subtitle"></xsl:template> + +<xsl:template match="sect2info"></xsl:template> +<xsl:template match="sect2/info"></xsl:template> +<xsl:template match="sect2/title"></xsl:template> +<xsl:template match="sect2/titleabbrev"></xsl:template> +<xsl:template match="sect2/subtitle"></xsl:template> + +<xsl:template match="sect3info"></xsl:template> +<xsl:template match="sect3/info"></xsl:template> +<xsl:template match="sect3/title"></xsl:template> +<xsl:template match="sect3/titleabbrev"></xsl:template> +<xsl:template match="sect3/subtitle"></xsl:template> + +<xsl:template match="sect4info"></xsl:template> +<xsl:template match="sect4/info"></xsl:template> +<xsl:template match="sect4/title"></xsl:template> +<xsl:template match="sect4/titleabbrev"></xsl:template> +<xsl:template match="sect4/subtitle"></xsl:template> + +<xsl:template match="sect5info"></xsl:template> +<xsl:template match="sect5/info"></xsl:template> +<xsl:template match="sect5/title"></xsl:template> +<xsl:template match="sect5/titleabbrev"></xsl:template> +<xsl:template match="sect5/subtitle"></xsl:template> + +<xsl:template match="simplesect/info"></xsl:template> +<xsl:template match="simplesect/title"></xsl:template> +<xsl:template match="simplesect/titleabbrev"></xsl:template> +<xsl:template match="simplesect/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="section.heading"> +  <xsl:param name="level" select="1"/> +  <xsl:param name="marker" select="1"/> +  <xsl:param name="title"/> +  <xsl:param name="marker.title"/> + +  <fo:block xsl:use-attribute-sets="section.title.properties"> +    <xsl:if test="$marker != 0"> +      <fo:marker marker-class-name="section.head.marker"> +        <xsl:copy-of select="$marker.title"/> +      </fo:marker> +    </xsl:if> + +    <xsl:choose> +      <xsl:when test="$level=1"> +        <fo:block xsl:use-attribute-sets="section.title.level1.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=2"> +        <fo:block xsl:use-attribute-sets="section.title.level2.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=3"> +        <fo:block xsl:use-attribute-sets="section.title.level3.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=4"> +        <fo:block xsl:use-attribute-sets="section.title.level4.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=5"> +        <fo:block xsl:use-attribute-sets="section.title.level5.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <fo:block xsl:use-attribute-sets="section.title.level6.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="bridgehead"> +  <xsl:variable name="container" +                select="(ancestor::appendix +                        |ancestor::article +                        |ancestor::bibliography +                        |ancestor::chapter +                        |ancestor::glossary +                        |ancestor::glossdiv +                        |ancestor::index +                        |ancestor::partintro +                        |ancestor::preface +                        |ancestor::refsect1 +                        |ancestor::refsect2 +                        |ancestor::refsect3 +                        |ancestor::sect1 +                        |ancestor::sect2 +                        |ancestor::sect3 +                        |ancestor::sect4 +                        |ancestor::sect5 +                        |ancestor::section +                        |ancestor::setindex +                        |ancestor::simplesect)[last()]"/> + +  <xsl:variable name="clevel"> +    <xsl:choose> +      <xsl:when test="local-name($container) = 'appendix' +                      or local-name($container) = 'chapter' +                      or local-name($container) = 'article' +                      or local-name($container) = 'bibliography' +                      or local-name($container) = 'glossary' +                      or local-name($container) = 'index' +                      or local-name($container) = 'partintro' +                      or local-name($container) = 'preface' +                      or local-name($container) = 'setindex'">2</xsl:when> +      <xsl:when test="local-name($container) = 'glossdiv'"> +        <xsl:value-of select="count(ancestor::glossdiv)+2"/> +      </xsl:when> +      <xsl:when test="local-name($container) = 'sect1' +                      or local-name($container) = 'sect2' +                      or local-name($container) = 'sect3' +                      or local-name($container) = 'sect4' +                      or local-name($container) = 'sect5' +                      or local-name($container) = 'refsect1' +                      or local-name($container) = 'refsect2' +                      or local-name($container) = 'refsect3' +                      or local-name($container) = 'section' +                      or local-name($container) = 'simplesect'"> +        <xsl:variable name="slevel"> +          <xsl:call-template name="section.level"> +            <xsl:with-param name="node" select="$container"/> +          </xsl:call-template> +        </xsl:variable> +        <xsl:value-of select="$slevel + 1"/> +      </xsl:when> +      <xsl:otherwise>2</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="level"> +    <xsl:choose> +      <xsl:when test="@renderas = 'sect1'">1</xsl:when> +      <xsl:when test="@renderas = 'sect2'">2</xsl:when> +      <xsl:when test="@renderas = 'sect3'">3</xsl:when> +      <xsl:when test="@renderas = 'sect4'">4</xsl:when> +      <xsl:when test="@renderas = 'sect5'">5</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$clevel"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="marker"> +    <xsl:choose> +      <xsl:when test="$level <= $marker.section.level">1</xsl:when> +      <xsl:otherwise>0</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="marker.title"> +    <xsl:apply-templates/> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="section.heading"> +      <xsl:with-param name="level" select="$level"/> +      <xsl:with-param name="title"> +        <xsl:apply-templates/> +      </xsl:with-param> +      <xsl:with-param name="marker" select="$marker"/> +      <xsl:with-param name="marker.title" select="$marker.title"/> +    </xsl:call-template> +  </fo:block> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/sedK0rnpC b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/sedK0rnpC new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/sedK0rnpC diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/sedLJ2jWL b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/sedLJ2jWL new file mode 100644 index 0000000..cdd2936 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/sedLJ2jWL @@ -0,0 +1,1180 @@ +<?xml version="1.0"?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY % common.entities SYSTEM "../common/entities.ent"> +%common.entities; +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                xmlns:exslt="http://exslt.org/common" +                extension-element-prefixes="exslt" +                exclude-result-prefixes="exslt" +                version="1.0"> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "basic" method derived from Jeni Tennison's work. --> +<!-- The "kosek" method contributed by Jirka Kosek. --> +<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. --> + +<!-- Importing module for kimber or kosek method overrides one of these --> +<xsl:param name="kimber.imported" select="0"/> +<xsl:param name="kosek.imported" select="0"/> + +<!-- These keys used primary in all methods --> +<xsl:key name="letter" +         match="indexterm" +         use="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> + +<xsl:key name="primary" +         match="indexterm" +         use="&primary;"/> + +<xsl:key name="secondary" +         match="indexterm" +         use="concat(&primary;, &sep;, &secondary;)"/> + +<xsl:key name="tertiary" +         match="indexterm" +         use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> + +<xsl:key name="endofrange" +         match="indexterm[@class='endofrange']" +         use="@startref"/> + +<xsl:key name="see-also" +         match="indexterm[seealso]" +         use="concat(&primary;, &sep;,  +                     &secondary;, &sep;,  +                     &tertiary;, &sep;, seealso)"/> + +<xsl:key name="see" +         match="indexterm[see]" +         use="concat(&primary;, &sep;,  +                     &secondary;, &sep;,  +                     &tertiary;, &sep;, see)"/> + + +<xsl:template name="generate-index"> +  <xsl:param name="scope" select="(ancestor::book|/)[last()]"/> + +  <xsl:choose> +    <xsl:when test="$index.method = 'kosek'"> +      <xsl:call-template name="generate-kosek-index"> +        <xsl:with-param name="scope" select="$scope"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$index.method = 'kimber'"> +      <xsl:call-template name="generate-kimber-index"> +        <xsl:with-param name="scope" select="$scope"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:call-template name="generate-basic-index"> +        <xsl:with-param name="scope" select="$scope"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> +       +<xsl:template name="generate-basic-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="role"> +    <xsl:if test="$index.on.role != 0"> +      <xsl:value-of select="@role"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:if test="$index.on.type != 0"> +      <xsl:value-of select="@type"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="terms" +                select="//indexterm +                        [count(.|key('letter', +                          translate(substring(&primary;, 1, 1), +                             &lowercase;, +                             &uppercase;)) +                          [&scope;][1]) = 1 +                          and not(@class = 'endofrange')]"/> + +  <xsl:variable name="alphabetical" +                select="$terms[contains(concat(&lowercase;, &uppercase;), +                                        substring(&primary;, 1, 1))]"/> + +  <xsl:variable name="others" select="$terms[not(contains( +                                        concat(&lowercase;, +                                        &uppercase;), +                                        substring(&primary;, 1, 1)))]"/> +  <fo:block> +    <xsl:if test="$others"> +      <xsl:call-template name="indexdiv.title"> +        <xsl:with-param name="titlecontent"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'index symbols'"/> +          </xsl:call-template> +        </xsl:with-param> +      </xsl:call-template> + +      <fo:block> +        <xsl:apply-templates select="$others[count(.|key('primary', +                                     &primary;)[&scope;][1]) = 1]" +                             mode="index-symbol-div"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort select="translate(&primary;, &lowercase;,  +                            &uppercase;)"/> +        </xsl:apply-templates> +      </fo:block> +    </xsl:if> + +    <xsl:apply-templates select="$alphabetical[count(.|key('letter', +                                 translate(substring(&primary;, 1, 1), +                                           &lowercase;,&uppercase;)) +                                           [&scope;][1]) = 1]" +                         mode="index-div-basic"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </fo:block> +</xsl:template> + +<!-- This template not used if fo/autoidx-kosek.xsl is imported --> +<xsl:template name="generate-kosek-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="contains($vendor, 'libxslt')"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kosek' index method does not </xsl:text> +      <xsl:text>work with the xsltproc XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + + +  <xsl:if test="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
</xsl:text> +      <xsl:text>kosek index extensions be imported:
</xsl:text> +      <xsl:text>  xsl:import href="fo/autoidx-kosek.xsl"</xsl:text> +    </xsl:message> +  </xsl:if> + +</xsl:template> + + +<!-- This template not used if fo/autoidx-kimber.xsl is imported --> +<xsl:template name="generate-kimber-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="not(contains($vendor, 'SAXON '))"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> +      <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="$kimber.imported = 0"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the
</xsl:text> +      <xsl:text>kimber index extensions be imported:
</xsl:text> +      <xsl:text>  xsl:import href="fo/autoidx-kimber.xsl"</xsl:text> +    </xsl:message> +  </xsl:if> + +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-basic"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" +                select="translate(substring(&primary;, 1, 1), +                         &lowercase;,&uppercase;)"/> + +  <xsl:if test="key('letter', $key)[&scope;] +                [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> +    <fo:block> +      <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)"> +        <xsl:call-template name="indexdiv.title"> +          <xsl:with-param name="titlecontent"> +            <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:block xsl:use-attribute-sets="index.entry.properties"> +        <xsl:apply-templates select="key('letter', $key)[&scope;] +                                     [count(.|key('primary', &primary;) +                                     [&scope;][1])=1]" +                             mode="index-primary"> +          <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +        </xsl:apply-templates> +      </fo:block> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-symbol-div"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" +                select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> + +  <fo:block xsl:use-attribute-sets="index.entry.properties"> +    <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]" +                         mode="index-primary"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </fo:block> +</xsl:template> + +<xsl:template match="indexterm" mode="index-primary"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" select="&primary;"/> +  <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:block> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute> +    </xsl:if> +    <xsl:value-of select="primary"/> + +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:if test="$refs[not(see) and not(secondary)]"> +          <xsl:copy-of select="$term.separator"/> +          <xsl:variable name="primary" select="&primary;"/> +          <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/> +          <rx:page-index list-separator="{$number.separator}" +                         range-separator="{$range.separator}"> +            <xsl:if test="$refs[@significance='preferred'][not(see) and not(secondary)]"> +              <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties" +                ref-key="{$primary.significant}"/> +            </xsl:if> +            <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see) and not(secondary)]"> +              <rx:index-item xsl:use-attribute-sets="xep.index.item.properties" +                ref-key="{$primary}"/> +            </xsl:if> +          </rx:page-index>         +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:variable name="page-number-citations"> +          <xsl:for-each select="$refs[not(see)  +                                and not(secondary)]"> +            <xsl:apply-templates select="." mode="reference"> +              <xsl:with-param name="scope" select="$scope"/> +              <xsl:with-param name="role" select="$role"/> +              <xsl:with-param name="type" select="$type"/> +              <xsl:with-param name="position" select="position()"/> +            </xsl:apply-templates> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:choose> +          <xsl:when test="$passivetex.extensions != '0'"> +            <fotex:sort xmlns:fotex="http://www.tug.org/fotex"> +              <xsl:copy-of select="$page-number-citations"/> +            </fotex:sort> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$page-number-citations"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:if test="$refs[not(secondary)]/*[self::see]"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]" +                           mode="index-see"> +         <xsl:with-param name="scope" select="$scope"/> +         <xsl:with-param name="role" select="$role"/> +         <xsl:with-param name="type" select="$type"/> +         <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </xsl:if> + +  </fo:block> + +  <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]"> +    <fo:block start-indent="1pc"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]" +                           mode="index-seealso"> +         <xsl:with-param name="scope" select="$scope"/> +         <xsl:with-param name="role" select="$role"/> +         <xsl:with-param name="type" select="$type"/> +         <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +      <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]" +                           mode="index-secondary"> +       <xsl:with-param name="scope" select="$scope"/> +       <xsl:with-param name="role" select="$role"/> +       <xsl:with-param name="type" select="$type"/> +       <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-secondary"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/> +  <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:block> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute> +    </xsl:if> +    <xsl:value-of select="secondary"/> + +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:if test="$refs[not(see) and not(tertiary)]"> +          <xsl:copy-of select="$term.separator"/> +          <xsl:variable name="primary" select="&primary;"/> +          <xsl:variable name="secondary" select="&secondary;"/> +          <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/> +          <rx:page-index list-separator="{$number.separator}" +                         range-separator="{$range.separator}"> +            <xsl:if test="$refs[@significance='preferred'][not(see) and not(tertiary)]"> +              <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary.significant"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +            <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see) and not(tertiary)]"> +              <rx:index-item xsl:use-attribute-sets="xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +          </rx:page-index> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:variable name="page-number-citations"> +          <xsl:for-each select="$refs[not(see)  +                                and not(tertiary)]"> +            <xsl:apply-templates select="." mode="reference"> +              <xsl:with-param name="scope" select="$scope"/> +              <xsl:with-param name="role" select="$role"/> +              <xsl:with-param name="type" select="$type"/> +              <xsl:with-param name="position" select="position()"/> +            </xsl:apply-templates> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:choose> +          <xsl:when test="$passivetex.extensions != '0'"> +            <fotex:sort xmlns:fotex="http://www.tug.org/fotex"> +              <xsl:copy-of select="$page-number-citations"/> +            </fotex:sort> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$page-number-citations"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:if test="$refs[not(tertiary)]/*[self::see]"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]" +                           mode="index-see"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +        <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </xsl:if> + +  </fo:block> + +  <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]"> +    <fo:block start-indent="2pc"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]" +                           mode="index-seealso"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +      <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]"  +                           mode="index-tertiary"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-tertiary"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> +  <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:block> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute> +    </xsl:if> +    <xsl:value-of select="tertiary"/> + +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:if test="$refs[not(see)]"> +          <xsl:copy-of select="$term.separator"/> +          <xsl:variable name="primary" select="&primary;"/> +          <xsl:variable name="secondary" select="&secondary;"/> +          <xsl:variable name="tertiary" select="&tertiary;"/> +          <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/> +          <rx:page-index list-separator="{$number.separator}" +                         range-separator="{$range.separator}"> +            <xsl:if test="$refs[@significance='preferred'][not(see)]"> +              <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary.significant"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$tertiary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +            <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see)]"> +              <rx:index-item xsl:use-attribute-sets="xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$tertiary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +          </rx:page-index> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:variable name="page-number-citations"> +          <xsl:for-each select="$refs[not(see)]"> +            <xsl:apply-templates select="." mode="reference"> +              <xsl:with-param name="scope" select="$scope"/> +              <xsl:with-param name="role" select="$role"/> +              <xsl:with-param name="type" select="$type"/> +              <xsl:with-param name="position" select="position()"/> +            </xsl:apply-templates> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:choose> +          <xsl:when test="$passivetex.extensions != '0'"> +            <fotex:sort xmlns:fotex="http://www.tug.org/fotex"> +              <xsl:copy-of select="$page-number-citations"/> +            </fotex:sort> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$page-number-citations"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:if test="$refs/see"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]" +                           mode="index-see"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +        <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </xsl:if> + +  </fo:block> + +  <xsl:if test="$refs/seealso"> +    <fo:block> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]" +                           mode="index-seealso"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +        <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="reference"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:param name="position" select="0"/> +  <xsl:param name="separator" select="''"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$separator != ''"> +      <xsl:value-of select="$separator"/> +    </xsl:when> +    <xsl:when test="$position = 1"> +      <xsl:value-of select="$term.separator"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$number.separator"/> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="@zone and string(@zone)"> +      <xsl:call-template name="reference"> +        <xsl:with-param name="zones" select="normalize-space(@zone)"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="ancestor::*[contains(local-name(),'info') and not(starts-with(local-name(),'info'))]"> +      <xsl:call-template name="info.reference"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"/> +      </xsl:variable> + +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> + +      <xsl:if test="key('endofrange', $id)[&scope;]"> +        <xsl:apply-templates select="key('endofrange', $id)[&scope;][last()]" +                             mode="reference"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:with-param name="separator" select="$range.separator"/> +        </xsl:apply-templates> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="reference"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:param name="zones"/> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="contains($zones, ' ')"> +      <xsl:variable name="zone" select="substring-before($zones, ' ')"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +           <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> + +      <xsl:if test="$passivetex.extensions = '0'"> +        <xsl:copy-of select="$number.separator"/> +      </xsl:if> +      <xsl:call-template name="reference"> +        <xsl:with-param name="zones" select="substring-after($zones, ' ')"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="zone" select="$zones"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="info.reference"> +  <!-- This is not perfect. It doesn't treat indexterm inside info element as a range covering whole parent of info. +       It also not work when there is no ID generated for parent element. But it works in the most common cases. --> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="target" select="(ancestor::appendix|ancestor::article|ancestor::bibliography|ancestor::book| +                                       ancestor::chapter|ancestor::glossary|ancestor::part|ancestor::preface| +                                       ancestor::refentry|ancestor::reference|ancestor::refsect1|ancestor::refsect2| +                                       ancestor::refsect3|ancestor::refsection|ancestor::refsynopsisdiv| +                                       ancestor::sect1|ancestor::sect2|ancestor::sect3|ancestor::sect4|ancestor::sect5| +                                       ancestor::section|ancestor::setindex|ancestor::set|ancestor::sidebar)[&scope;]"/> +   +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$target[1]"/> +    </xsl:call-template> +  </xsl:variable> +   +  <fo:basic-link internal-destination="{$id}" +                 xsl:use-attribute-sets="index.page.number.properties"> +    <fo:page-number-citation ref-id="{$id}"/> +  </fo:basic-link> +</xsl:template> + +<xsl:template match="indexterm" mode="index-see"> +   <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +   <fo:inline> +     <xsl:text> (</xsl:text> +     <xsl:call-template name="gentext"> +       <xsl:with-param name="key" select="'see'"/> +     </xsl:call-template> +     <xsl:text> </xsl:text> +     <xsl:value-of select="see"/> +     <xsl:text>)</xsl:text> +   </fo:inline> +</xsl:template> + +<xsl:template match="indexterm" mode="index-seealso"> +   <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:for-each select="seealso"> +    <xsl:sort select="translate(., &lowercase;, &uppercase;)"/> +    <fo:block> +      <xsl:text>(</xsl:text> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'seealso'"/> +      </xsl:call-template> +      <xsl:text> </xsl:text> +      <xsl:value-of select="."/> +      <xsl:text>)</xsl:text> +    </fo:block> +  </xsl:for-each> + +</xsl:template> + +<!-- ====================================================================== --> + +<xsl:template name="generate-index-markup"> +  <xsl:param name="scope" select="(ancestor::book|/)[last()]"/> +  <xsl:param name="role" select="@role"/> +  <xsl:param name="type" select="@type"/> + +  <xsl:variable name="terms" select="$scope//indexterm[count(.|key('letter', +                                     translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[&scope;][1]) = 1]"/> +  <xsl:variable name="alphabetical" +                select="$terms[contains(concat(&lowercase;, &uppercase;), +                                        substring(&primary;, 1, 1))]"/> +  <xsl:variable name="others" select="$terms[not(contains(concat(&lowercase;, +                                                 &uppercase;), +                                             substring(&primary;, 1, 1)))]"/> + +  <xsl:text><index>
</xsl:text> +  <xsl:if test="$others"> +    <xsl:text>
<indexdiv>
</xsl:text> +    <xsl:text><title></xsl:text> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'index symbols'"/> +    </xsl:call-template> +    <xsl:text></title>
</xsl:text> +    <xsl:apply-templates select="$others[count(.|key('primary', +                                 &primary;)[&scope;][1]) = 1]" +                         mode="index-symbol-div-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:text></indexdiv>
</xsl:text> +  </xsl:if> + +  <xsl:apply-templates select="$alphabetical[count(.|key('letter', +                               translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[&scope;][1]) = 1]" +                       mode="index-div-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +  </xsl:apply-templates> +  <xsl:text></index>
</xsl:text> +</xsl:template> + +<xsl:template match="*" mode="index-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:text><</xsl:text> +  <xsl:value-of select="local-name(.)"/> +  <xsl:text>>
</xsl:text> +  <xsl:apply-templates mode="index-markup"> +    <xsl:with-param name="scope" select="$scope"/> +    <xsl:with-param name="role" select="$role"/> +    <xsl:with-param name="type" select="$type"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> +  <xsl:text>
<indexdiv>
</xsl:text> +  <xsl:text><title></xsl:text> +  <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/> +  <xsl:text></title>
</xsl:text> + +  <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]" +                       mode="index-primary-markup"> +    <xsl:with-param name="scope" select="$scope"/> +    <xsl:with-param name="role" select="$role"/> +    <xsl:with-param name="type" select="$type"/> +    <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +  </xsl:apply-templates> +  <xsl:text></indexdiv>
</xsl:text> +</xsl:template> + +<xsl:template match="indexterm" mode="index-symbol-div-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> + +  <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]" +                       mode="index-primary-markup"> +    <xsl:with-param name="scope" select="$scope"/> +    <xsl:with-param name="role" select="$role"/> +    <xsl:with-param name="type" select="$type"/> +    <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="indexterm" mode="index-primary-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="&primary;"/> +  <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/> +  <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/> + +  <xsl:text>
<indexentry>
</xsl:text> +  <xsl:text><primaryie></xsl:text> +  <xsl:text><phrase></xsl:text> +  <xsl:call-template name="escape-text"> +    <xsl:with-param name="text" select="string(primary)"/> +  </xsl:call-template> +  <xsl:text></phrase></xsl:text> +  <xsl:if test="$pages">,</xsl:if> +  <xsl:text>
</xsl:text> + +  <xsl:for-each select="$pages"> +    <xsl:apply-templates select="." mode="reference-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +    </xsl:apply-templates> +  </xsl:for-each> + +  <xsl:text></primaryie>
</xsl:text> + +  <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::see or self::seealso]"> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]" +                         mode="index-see-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]" +                         mode="index-seealso-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]"  +                         mode="index-secondary-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </xsl:if> +  <xsl:text></indexentry>
</xsl:text> +</xsl:template> + +<xsl:template match="indexterm" mode="index-secondary-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/> +  <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/> +  <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/> + +  <xsl:text><secondaryie></xsl:text> +  <xsl:text><phrase></xsl:text> +  <xsl:call-template name="escape-text"> +    <xsl:with-param name="text" select="string(secondary)"/> +  </xsl:call-template> +  <xsl:text></phrase></xsl:text> +  <xsl:if test="$pages">,</xsl:if> +  <xsl:text>
</xsl:text> + +  <xsl:for-each select="$pages"> +    <xsl:apply-templates select="." mode="reference-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +    </xsl:apply-templates> +  </xsl:for-each> + +  <xsl:text></secondaryie>
</xsl:text> + +  <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::see or self::seealso]"> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]" +                         mode="index-see-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]" +                         mode="index-seealso-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]"  +                         mode="index-tertiary-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-tertiary-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> +  <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/> +  <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/> + +  <xsl:text><tertiaryie></xsl:text> +  <xsl:text><phrase></xsl:text> +  <xsl:call-template name="escape-text"> +    <xsl:with-param name="text" select="string(tertiary)"/> +  </xsl:call-template> +  <xsl:text></phrase></xsl:text> +  <xsl:if test="$pages">,</xsl:if> +  <xsl:text>
</xsl:text> + +  <xsl:for-each select="$pages"> +    <xsl:apply-templates select="." mode="reference-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +    </xsl:apply-templates> +  </xsl:for-each> + +  <xsl:text></tertiaryie>
</xsl:text> + +  <xsl:variable name="see" select="$refs/see | $refs/seealso"/> +  <xsl:if test="$see"> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]" +                         mode="index-see-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]" +                         mode="index-seealso-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="reference-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:choose> +    <xsl:when test="@zone and string(@zone)"> +      <xsl:call-template name="reference-markup"> +        <xsl:with-param name="zones" select="normalize-space(@zone)"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"/> +      </xsl:variable> + + +      <xsl:choose> +        <xsl:when test="@startref and @class='endofrange'"> +          <xsl:text><phrase role="pageno"></xsl:text> +          <xsl:text><link linkend="</xsl:text> +          <xsl:value-of select="@startref"/> +          <xsl:text>"></xsl:text> +          <fo:basic-link internal-destination="{@startref}" +                     xsl:use-attribute-sets="index.page.number.properties"> +            <fo:page-number-citation ref-id="{@startref}"/> +            <xsl:text>-</xsl:text> +            <fo:page-number-citation ref-id="{$id}"/> +          </fo:basic-link> +          <xsl:text></link></xsl:text> +          <xsl:text></phrase>
</xsl:text> +        </xsl:when> +        <xsl:otherwise> +          <xsl:text><phrase role="pageno"></xsl:text> +          <xsl:if test="$id"> +            <xsl:text><link linkend="</xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text>"></xsl:text> +          </xsl:if> +          <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +            <fo:page-number-citation ref-id="{$id}"/> +          </fo:basic-link> +          <xsl:if test="$id"> +            <xsl:text></link></xsl:text> +          </xsl:if> +          <xsl:text></phrase>
</xsl:text> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="reference-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:param name="zones"/> +  <xsl:choose> +    <xsl:when test="contains($zones, ' ')"> +      <xsl:variable name="zone" select="substring-before($zones, ' ')"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:text><phrase fole="pageno"></xsl:text> +      <xsl:if test="$target[1]/@id or $target[1]/@xml:id"> +        <xsl:text><link linkend="</xsl:text> +        <xsl:value-of select="$id"/> +        <xsl:text>"></xsl:text> +      </xsl:if> +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +      <xsl:if test="$target[1]/@id or $target[1]/@xml:id"> +        <xsl:text></link></xsl:text> +      </xsl:if> +      <xsl:text></phrase>
</xsl:text> + +      <xsl:call-template name="reference"> +        <xsl:with-param name="zones" select="substring-after($zones, ' ')"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="zone" select="$zones"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:text><phrase role="pageno"></xsl:text> +      <xsl:if test="$target[1]/@id or target[1]/@xml:id"> +        <xsl:text><link linkend="</xsl:text> +        <xsl:value-of select="$id"/> +        <xsl:text>"></xsl:text> +      </xsl:if> +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +      <xsl:if test="$target[1]/@id or target[1]/@xml:id"> +        <xsl:text></link></xsl:text> +      </xsl:if> +      <xsl:text></phrase>
</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="indexterm" mode="index-see-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/spaces.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/spaces.xsl.svn-base new file mode 100644 index 0000000..13c5d87 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/spaces.xsl.svn-base @@ -0,0 +1,273 @@ +<?xml version='1.0' encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** +     XSL-FO specification treats all space characters like ordinary spaces. +     We need to map them to fo:leader with different widths in order to +     simulate desired behaviour. +     ******************************************************************** --> + +<xsl:template match="text()[namespace-uri(..) = '']"> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0"> +      <xsl:call-template name="passivetex.dash.subst"> +        <xsl:with-param name="string"> +	  <xsl:call-template name="space.2000.subst"> +	    <xsl:with-param name="string" select="."/> +	  </xsl:call-template> +	</xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2000.subst"> +	<xsl:with-param name="string" select="."/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:param name="space.enquad.width">0.5em</xsl:param>   <!-- U+2000 --> +<xsl:param name="space.emquad.width">1em</xsl:param>     <!-- U+2001 --> +<xsl:param name="space.enspace.width">0.5em</xsl:param>  <!-- U+2002 --> +<xsl:param name="space.emspace.width">1em</xsl:param>    <!-- U+2003 --> +<xsl:param name="space.3emspace.width">0.33em</xsl:param><!-- U+2004 --> +<xsl:param name="space.4emspace.width">0.25em</xsl:param><!-- U+2005 --> +<xsl:param name="space.6emspace.width">0.16em</xsl:param><!-- U+2006 --> +<xsl:param name="space.figspace.width"></xsl:param>      <!-- U+2007 --> +<xsl:param name="space.punctspace.width"></xsl:param>    <!-- U+2008 --> +<xsl:param name="space.thinspace.width">0.2em</xsl:param><!-- U+2009 --> +<xsl:param name="space.hairspace.width">0.1em</xsl:param><!-- U+200A --> + +<xsl:template name="space.2000.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.enquad.width != ''"> +      <xsl:call-template name="space.2001.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.enquad.width}"/> +      <xsl:call-template name="space.2000.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2001.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2001.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.emquad.width != ''"> +      <xsl:call-template name="space.2002.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.emquad.width}"/> +      <xsl:call-template name="space.2001.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2002.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2002.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.enspace.width != ''"> +      <xsl:call-template name="space.2003.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.enspace.width}"/> +      <xsl:call-template name="space.2002.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2003.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2003.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.emspace.width != ''"> +      <xsl:call-template name="space.2004.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.emspace.width}"/> +      <xsl:call-template name="space.2003.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2004.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2004.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.3emspace.width != ''"> +      <xsl:call-template name="space.2005.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.3emspace.width}"/> +      <xsl:call-template name="space.2004.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2005.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2005.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.4emspace.width != ''"> +      <xsl:call-template name="space.2006.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.4emspace.width}"/> +      <xsl:call-template name="space.2005.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2006.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2006.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.6emspace.width != ''"> +      <xsl:call-template name="space.2007.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.6emspace.width}"/> +      <xsl:call-template name="space.2006.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2007.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2007.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.figspace.width != ''"> +      <xsl:call-template name="space.2008.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.figspace.width}"/> +      <xsl:call-template name="space.2007.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2008.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2008.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.punctspace.width != ''"> +      <xsl:call-template name="space.2009.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.punctspace.width}"/> +      <xsl:call-template name="space.2008.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2009.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2009.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.thinspace.width != ''"> +      <xsl:call-template name="space.200A.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.thinspace.width}"/> +      <xsl:call-template name="space.2009.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.200A.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.200A.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.hairspace.width != ''"> +      <xsl:value-of select="substring-before($string, ' ')"/> +      <fo:leader leader-length="{$space.hairspace.width}"/> +      <xsl:call-template name="space.200A.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$string"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/synop.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/synop.xsl.svn-base new file mode 100644 index 0000000..493c181 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/synop.xsl.svn-base @@ -0,0 +1,967 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY RE "
"> +<!ENTITY nbsp " "> +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- synopsis is in verbatim --> + +<!-- ==================================================================== --> + +<xsl:template match="cmdsynopsis"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="cmdsynopsis/command"> +  <xsl:call-template name="inline.monoseq"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="cmdsynopsis/command[1]" priority="2"> +  <xsl:call-template name="inline.monoseq"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="group|arg" name="group-or-arg"> +  <xsl:variable name="choice" select="@choice"/> +  <xsl:variable name="rep" select="@rep"/> +  <xsl:variable name="sepchar"> +    <xsl:choose> +      <xsl:when test="ancestor-or-self::*/@sepchar"> +        <xsl:value-of select="ancestor-or-self::*/@sepchar"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:text> </xsl:text> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:if test="preceding-sibling::*"> +    <xsl:value-of select="$sepchar"/> +  </xsl:if> +  <xsl:choose> +    <xsl:when test="$choice='plain'"> +      <xsl:value-of select="$arg.choice.plain.open.str"/> +    </xsl:when> +    <xsl:when test="$choice='req'"> +      <xsl:value-of select="$arg.choice.req.open.str"/> +    </xsl:when> +    <xsl:when test="$choice='opt'"> +      <xsl:value-of select="$arg.choice.opt.open.str"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$arg.choice.def.open.str"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates/> +  <xsl:choose> +    <xsl:when test="$rep='repeat'"> +      <xsl:value-of select="$arg.rep.repeat.str"/> +    </xsl:when> +    <xsl:when test="$rep='norepeat'"> +      <xsl:value-of select="$arg.rep.norepeat.str"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$arg.rep.def.str"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:choose> +    <xsl:when test="$choice='plain'"> +      <xsl:value-of select="$arg.choice.plain.close.str"/> +    </xsl:when> +    <xsl:when test="$choice='req'"> +      <xsl:value-of select="$arg.choice.req.close.str"/> +    </xsl:when> +    <xsl:when test="$choice='opt'"> +      <xsl:value-of select="$arg.choice.opt.close.str"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$arg.choice.def.close.str"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="group/arg"> +  <xsl:variable name="choice" select="@choice"/> +  <xsl:variable name="rep" select="@rep"/> +  <xsl:if test="preceding-sibling::*"> +    <xsl:value-of select="$arg.or.sep"/> +  </xsl:if> +  <xsl:call-template name="group-or-arg"/> +</xsl:template> + +<xsl:template match="sbr"> +  <fo:block/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="synopfragmentref"> +  <xsl:variable name="target" select="key('id',@linkend)"/> +  <xsl:variable name="snum"> +    <xsl:apply-templates select="$target" mode="synopfragment.number"/> +  </xsl:variable> +  <fo:inline font-style="italic"> +    <fo:basic-link internal-destination="{@linkend}" +                   xsl:use-attribute-sets="xref.properties"> +      <xsl:text>(</xsl:text> +      <xsl:value-of select="$snum"/> +      <xsl:text>)</xsl:text> +    </fo:basic-link> +    <xsl:text> </xsl:text> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<xsl:template match="synopfragment" mode="synopfragment.number"> +  <xsl:number format="1"/> +</xsl:template> + +<xsl:template match="synopfragment"> +  <xsl:variable name="snum"> +    <xsl:apply-templates select="." mode="synopfragment.number"/> +  </xsl:variable> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:block id="{$id}"> +    <xsl:text>(</xsl:text> +    <xsl:value-of select="$snum"/> +    <xsl:text>)</xsl:text> +    <xsl:text> </xsl:text> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="funcsynopsis"> +  <xsl:call-template name="informal.object"/> +</xsl:template> + +<xsl:template match="funcsynopsisinfo"> +  <fo:block space-after.minimum="0.8em" +            space-after.optimum="1em" +            space-after.maximum="1.2em"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="funcprototype"> +  <fo:block font-family="{$monospace.font.family}" +          space-before.minimum="0.8em" +          space-before.optimum="1em" +          space-before.maximum="1.2em"> +    <xsl:apply-templates/> +    <xsl:if test="$funcsynopsis.style='kr'"> +      <fo:block +          space-before.minimum="0.8em" +          space-before.optimum="1em" +          space-before.maximum="1.2em"> +      <xsl:apply-templates select="./paramdef" mode="kr-funcsynopsis-mode"/> +      </fo:block> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="funcdef"> +  <fo:inline font-family="{$monospace.font.family}"> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<xsl:template match="funcdef/function"> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.decoration != 0"> +      <fo:inline font-weight="bold"> +        <xsl:apply-templates/> +      </fo:inline> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="void"> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.style='ansi'"> +      <xsl:text>(void);</xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>();</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varargs"> +  <xsl:text>(...);</xsl:text> +</xsl:template> + +<xsl:template match="paramdef"> +  <xsl:variable name="paramnum"> +    <xsl:number count="paramdef" format="1"/> +  </xsl:variable> +  <xsl:if test="$paramnum=1">(</xsl:if> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.style='ansi'"> +      <xsl:apply-templates/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="./parameter"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:choose> +    <xsl:when test="following-sibling::paramdef"> +      <xsl:text>, </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>);</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="paramdef/parameter"> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.decoration != 0"> +      <xsl:call-template name="inline.italicseq"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:if test="following-sibling::parameter"> +    <xsl:text>, </xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="paramdef" mode="kr-funcsynopsis-mode"> +  <fo:block> +    <xsl:apply-templates/> +    <xsl:text>;</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="funcparams"> +  <xsl:text>(</xsl:text> +  <xsl:apply-templates/> +  <xsl:text>)</xsl:text> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:variable name="default-classsynopsis-language">java</xsl:variable> + +<xsl:template match="classsynopsis +                     |fieldsynopsis +                     |methodsynopsis +                     |constructorsynopsis +                     |destructorsynopsis"> +  <xsl:param name="language"> +    <xsl:choose> +      <xsl:when test="@language"> +	<xsl:value-of select="@language"/> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="$default-classsynopsis-language"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:param> + +  <!-- +  <xsl:message>process <xsl:value-of select="local-name(.)"/> in <xsl:value-of select="$language"/></xsl:message> +  --> + +  <xsl:choose> +    <xsl:when test="$language='java' or $language='Java'"> +      <xsl:apply-templates select="." mode="java"/> +    </xsl:when> +    <xsl:when test="$language='perl' or $language='Perl'"> +      <xsl:apply-templates select="." mode="perl"/> +    </xsl:when> +    <xsl:when test="$language='idl' or $language='IDL'"> +      <xsl:apply-templates select="." mode="idl"/> +    </xsl:when> +    <xsl:when test="$language='cpp' or $language='c++' or $language='C++'"> +      <xsl:apply-templates select="." mode="cpp"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message> +	<xsl:text>Unrecognized language on </xsl:text> +        <xsl:value-of select="local-name(.)"/> +        <xsl:text>: </xsl:text> +	<xsl:value-of select="$language"/> +      </xsl:message> +      <xsl:apply-templates select="."> +	<xsl:with-param name="language" +	  select="$default-classsynopsis-language"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="synop-break"> +  <xsl:if test="parent::classsynopsis +                or (following-sibling::fieldsynopsis +                    |following-sibling::methodsynopsis +                    |following-sibling::constructorsynopsis +                    |following-sibling::destructorsynopsis)"> +    <fo:inline>&RE;</fo:inline> +  </xsl:if> +</xsl:template> + +<!-- ===== Java ======================================================== --> + +<xsl:template match="classsynopsis" mode="java"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:apply-templates select="ooclass[1]" mode="java"/> +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text> extends</xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/> +      <xsl:if test="oointerface|ooexception"> +        <xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="oointerface"> +      <xsl:text>implements</xsl:text> +      <xsl:apply-templates select="oointerface" mode="java"/> +      <xsl:if test="ooexception"> +	<xsl:text>&RE;    </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> {&RE;</xsl:text> +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="java"/> +    <xsl:text>}</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="java"> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="java"> +  <xsl:choose> +    <xsl:when test="preceding-sibling::*"> +      <xsl:text>, </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text> </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="java"> +  <xsl:apply-templates mode="java"/> +  <xsl:if test="following-sibling::*"> +    <xsl:text> </xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="java"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="interfacename" mode="java"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="java"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="java"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="java"/> +    <xsl:text>;</xsl:text> +    <xsl:call-template name="synop-break"/> +  </fo:block> +</xsl:template> + +<xsl:template match="type" mode="java"> +  <xsl:apply-templates mode="java"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="java"> +  <xsl:apply-templates mode="java"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="java"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="void" mode="java"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="java"> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="methodparam" mode="java"> +  <xsl:param name="indent">0</xsl:param> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>,&RE;</xsl:text> +    <xsl:if test="$indent > 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> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="parameter" mode="java"> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template mode="java" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="decl"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates select="$start-modifiers" mode="java"/> + +    <!-- type --> +    <xsl:if test="local-name($notmod[1]) != 'methodname'"> +      <xsl:apply-templates select="$notmod[1]" mode="java"/> +    </xsl:if> + +    <xsl:apply-templates select="methodname" mode="java"/> +  </xsl:variable> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:copy-of select="$decl"/> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates select="methodparam" mode="java"> +      <xsl:with-param name="indent" select="string-length($decl)"/> +    </xsl:apply-templates> +    <xsl:text>)</xsl:text> +    <xsl:if test="exceptionname"> +      <xsl:text>&RE;    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> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== C++ ========================================================= --> + +<xsl:template match="classsynopsis" mode="cpp"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:apply-templates select="ooclass[1]" mode="cpp"/> +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text>: </xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/> +      <xsl:if test="oointerface|ooexception"> +	<xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="oointerface"> +      <xsl:text> implements</xsl:text> +      <xsl:apply-templates select="oointerface" mode="cpp"/> +      <xsl:if test="ooexception"> +	<xsl:text>&RE;    </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> {&RE;</xsl:text> +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="cpp"/> +    <xsl:text>}</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="cpp"> +  <xsl:if test="preceding-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +    <xsl:if test="following-sibling::*"> +      <xsl:text> </xsl:text> +    </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="cpp"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="interfacename" mode="cpp"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="cpp"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="cpp"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="cpp"/> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="cpp"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="void" mode="cpp"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="methodparam" mode="cpp"> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="parameter" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template mode="cpp" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates select="$start-modifiers" mode="cpp"/> + +    <!-- type --> +    <xsl:if test="local-name($notmod[1]) != 'methodname'"> +      <xsl:apply-templates select="$notmod[1]" mode="cpp"/> +    </xsl:if> + +    <xsl:apply-templates select="methodname" mode="cpp"/> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates select="methodparam" mode="cpp"/> +    <xsl:text>)</xsl:text> +    <xsl:if test="exceptionname"> +      <xsl:text>&RE;    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> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== IDL ========================================================= --> + +<xsl:template match="classsynopsis" mode="idl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>interface </xsl:text> +    <xsl:apply-templates select="ooclass[1]" mode="idl"/> +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text>: </xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/> +      <xsl:if test="oointerface|ooexception"> +	<xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="oointerface"> +      <xsl:text> implements</xsl:text> +      <xsl:apply-templates select="oointerface" mode="idl"/> +      <xsl:if test="ooexception"> +	<xsl:text>&RE;    </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> {&RE;</xsl:text> +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="idl"/> +    <xsl:text>}</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="idl"> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="idl"> +  <xsl:if test="preceding-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="idl"> +  <xsl:apply-templates mode="idl"/> +    <xsl:if test="following-sibling::*"> +      <xsl:text> </xsl:text> +    </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="idl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="interfacename" mode="idl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="idl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="idl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="idl"/> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="idl"> +  <xsl:apply-templates mode="idl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="idl"> +  <xsl:apply-templates mode="idl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="idl"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="void" mode="idl"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="idl"> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="methodparam" mode="idl"> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="parameter" mode="idl"> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template mode="idl" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates select="$start-modifiers" mode="idl"/> + +    <!-- type --> +    <xsl:if test="local-name($notmod[1]) != 'methodname'"> +      <xsl:apply-templates select="$notmod[1]" mode="idl"/> +    </xsl:if> + +    <xsl:apply-templates select="methodname" mode="idl"/> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates select="methodparam" mode="idl"/> +    <xsl:text>)</xsl:text> +    <xsl:if test="exceptionname"> +      <xsl:text>&RE;    raises(</xsl:text> +      <xsl:apply-templates select="exceptionname" mode="idl"/> +      <xsl:text>)</xsl:text> +    </xsl:if> +    <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="$end-modifiers" mode="idl"/> +    </xsl:if> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== Perl ======================================================== --> + +<xsl:template match="classsynopsis" mode="perl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>package </xsl:text> +    <xsl:apply-templates select="ooclass[1]" mode="perl"/> +    <xsl:text>;&RE;</xsl:text> + +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text>@ISA = (</xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/> +      <xsl:text>);&RE;</xsl:text> +    </xsl:if> + +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="perl"/> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="perl"> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="perl"> +  <xsl:if test="preceding-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="perl"> +  <xsl:apply-templates mode="perl"/> +    <xsl:if test="following-sibling::*"> +      <xsl:text> </xsl:text> +    </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="perl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="interfacename" mode="perl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="perl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="perl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="perl"/> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="perl"> +  <xsl:apply-templates mode="perl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="perl"> +  <xsl:apply-templates mode="perl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="perl"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="void" mode="perl"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="perl"> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="methodparam" mode="perl"> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="parameter" mode="perl"> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template mode="perl" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>sub </xsl:text> + +    <xsl:apply-templates select="methodname" mode="perl"/> +    <xsl:text> { ... };</xsl:text> +    <xsl:call-template name="synop-break"/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- * 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/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/table.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/table.xsl.svn-base new file mode 100644 index 0000000..a741c07 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/table.xsl.svn-base @@ -0,0 +1,1535 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                xmlns:stbl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Table" +                xmlns:xtbl="com.nwalsh.xalan.Table" +                xmlns:lxslt="http://xml.apache.org/xslt" +                xmlns:ptbl="http://nwalsh.com/xslt/ext/xsltproc/python/Table" +                exclude-result-prefixes="doc stbl xtbl lxslt ptbl" +                version='1.0'> + +<xsl:include href="../common/table.xsl"/> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<doc:reference xmlns="" xml:id="table-templates"> +  <?dbhtml dir="fo"?> +  <info> +    <title>Formatting Object Table Reference</title> +    <releaseinfo role="meta"> +      $Id$ +    </releaseinfo> +  </info> +  <partintro xml:id="partintro"> +    <title>Introduction</title> +    <para>This is technical reference documentation for the FO +      table-processing templates in the DocBook XSL Stylesheets.</para> +    <para>This is not intended to be user documentation.  It is +      provided for developers writing customization layers for the +      stylesheets.</para> +  </partintro> +</doc:reference> + +<!-- ==================================================================== --> + +<lxslt:component prefix="xtbl" +                 functions="adjustColumnWidths"/> + +<!-- ==================================================================== --> + +<xsl:template name="make.table.content"> +  <xsl:choose> +    <xsl:when test="tgroup|mediaobject|graphic"> +      <xsl:call-template name="calsTable"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="." mode="htmlTable"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="calsTable"> + +  <xsl:variable name="keep.together"> +    <xsl:call-template name="pi.dbfo_keep-together"/> +  </xsl:variable> + +  <xsl:for-each select="tgroup"> + +    <fo:table xsl:use-attribute-sets="table.table.properties"> +      <xsl:if test="$keep.together != ''"> +        <xsl:attribute name="keep-together.within-column"> +          <xsl:value-of select="$keep.together"/> +        </xsl:attribute> +      </xsl:if> +      <xsl:call-template name="table.frame"/> +      <xsl:if test="following-sibling::tgroup"> +        <xsl:attribute name="border-bottom-width">0pt</xsl:attribute> +        <xsl:attribute name="border-bottom-style">none</xsl:attribute> +        <xsl:attribute name="padding-bottom">0pt</xsl:attribute> +        <xsl:attribute name="margin-bottom">0pt</xsl:attribute> +        <xsl:attribute name="space-after">0pt</xsl:attribute> +        <xsl:attribute name="space-after.minimum">0pt</xsl:attribute> +        <xsl:attribute name="space-after.optimum">0pt</xsl:attribute> +        <xsl:attribute name="space-after.maximum">0pt</xsl:attribute> +      </xsl:if> +      <xsl:if test="preceding-sibling::tgroup"> +        <xsl:attribute name="border-top-width">0pt</xsl:attribute> +        <xsl:attribute name="border-top-style">none</xsl:attribute> +        <xsl:attribute name="padding-top">0pt</xsl:attribute> +        <xsl:attribute name="margin-top">0pt</xsl:attribute> +        <xsl:attribute name="space-before">0pt</xsl:attribute> +        <xsl:attribute name="space-before.minimum">0pt</xsl:attribute> +        <xsl:attribute name="space-before.optimum">0pt</xsl:attribute> +        <xsl:attribute name="space-before.maximum">0pt</xsl:attribute> +      </xsl:if> +      <xsl:apply-templates select="."/> +    </fo:table> +  </xsl:for-each> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- Placeholder template enables wrapping a fo:table in +     another table for purposes of layout or applying +     extensions such as XEP table-omit-initial-header to +     create "continued" titles on page breaks. --> +<xsl:template name="table.layout"> +  <xsl:param name="table.content" select="NOTANODE"/> + +  <xsl:copy-of select="$table.content"/> +</xsl:template> + +<xsl:template name="table.block"> +  <xsl:param name="table.layout" select="NOTANODE"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="param.placement" +                select="substring-after(normalize-space( +                   $formal.title.placement), concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="self::table"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="table.properties"> +        <xsl:if test="$placement = 'before'"> +          <xsl:call-template name="formal.object.heading"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </xsl:if> +        <xsl:copy-of select="$table.layout"/> +        <xsl:call-template name="table.footnote.block"/> +        <xsl:if test="$placement != 'before'"> +          <xsl:call-template name="formal.object.heading"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </xsl:if> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="informaltable.properties"> +        <xsl:copy-of select="$table.layout"/> +        <xsl:call-template name="table.footnote.block"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> + + +</xsl:template> + +<!-- Output a table's footnotes in a block --> +<xsl:template name="table.footnote.block"> +  <xsl:if test=".//footnote"> +    <fo:block keep-with-previous.within-column="always"> +      <xsl:apply-templates select=".//footnote" mode="table.footnote.mode"/> +    </fo:block> +  </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="table.container"> +  <xsl:param name="table.block"/> +  <xsl:choose> +    <xsl:when test="@orient='land' and  +                    $fop.extensions = 0 and  +                    $passivetex.extensions = 0" > +      <fo:block-container reference-orientation="90" +            padding="6pt" +            xsl:use-attribute-sets="list.block.spacing"> +        <xsl:attribute name="width"> +          <xsl:call-template name="table.width"/> +        </xsl:attribute> +        <fo:block start-indent="0pt" end-indent="0pt"> +          <xsl:copy-of select="$table.block"/> +        </fo:block> +      </fo:block-container> +    </xsl:when> +    <xsl:when test="@pgwide = 1"> +      <fo:block xsl:use-attribute-sets="pgwide.properties"> +        <xsl:copy-of select="$table.block"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$table.block"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="empty.table.cell"> +  <xsl:param name="colnum" select="0"/> + +  <xsl:variable name="rowsep"> +    <xsl:choose> +      <!-- If this is the last row, rowsep never applies. --> +      <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) >= ancestor::tgroup/@cols">0</xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="inherited.table.attribute"> +          <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/> +          <xsl:with-param name="row" select="ancestor-or-self::row[1]"/> +          <xsl:with-param name="colnum" select="$colnum"/> +          <xsl:with-param name="attribute" select="'colsep'"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:table-cell text-align="center" +                 display-align="center" +                 xsl:use-attribute-sets="table.cell.padding"> +    <xsl:if test="$xep.extensions != 0"> +      <!-- Suggested by RenderX to workaround a bug in their implementation --> +      <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +    </xsl:if> +    <xsl:if test="$rowsep > 0"> +      <xsl:call-template name="border"> +        <xsl:with-param name="side" select="'bottom'"/> +      </xsl:call-template> +    </xsl:if> + +    <xsl:if test="$colsep > 0 and number($colnum) < ancestor::tgroup/@cols"> +      <xsl:call-template name="border"> +        <xsl:with-param name="side" select="'right'"/> +      </xsl:call-template> +    </xsl:if> + +    <!-- fo:table-cell should not be empty --> +    <fo:block/> +  </fo:table-cell> +</xsl:template> + +<!-- ==================================================================== --> +<xsl:template name="table.frame"> +  <xsl:variable name="frame"> +    <xsl:choose> +      <xsl:when test="../@frame"> +        <xsl:value-of select="../@frame"/> +      </xsl:when> +      <xsl:when test="$default.table.frame != ''"> +        <xsl:value-of select="$default.table.frame"/> +      </xsl:when> +      <xsl:otherwise>all</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$frame='all'"> +      <xsl:attribute name="border-left-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-left-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-left-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +    </xsl:when> +    <xsl:when test="$frame='bottom'"> +      <xsl:attribute name="border-left-style">none</xsl:attribute> +      <xsl:attribute name="border-right-style">none</xsl:attribute> +      <xsl:attribute name="border-top-style">none</xsl:attribute> +      <xsl:attribute name="border-bottom-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +    </xsl:when> +    <xsl:when test="$frame='sides'"> +      <xsl:attribute name="border-left-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-style">none</xsl:attribute> +      <xsl:attribute name="border-bottom-style">none</xsl:attribute> +      <xsl:attribute name="border-left-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-left-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +    </xsl:when> +    <xsl:when test="$frame='top'"> +      <xsl:attribute name="border-left-style">none</xsl:attribute> +      <xsl:attribute name="border-right-style">none</xsl:attribute> +      <xsl:attribute name="border-top-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-style">none</xsl:attribute> +      <xsl:attribute name="border-top-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +    </xsl:when> +    <xsl:when test="$frame='topbot'"> +      <xsl:attribute name="border-left-style">none</xsl:attribute> +      <xsl:attribute name="border-right-style">none</xsl:attribute> +      <xsl:attribute name="border-top-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +    </xsl:when> +    <xsl:when test="$frame='none'"> +      <xsl:attribute name="border-left-style">none</xsl:attribute> +      <xsl:attribute name="border-right-style">none</xsl:attribute> +      <xsl:attribute name="border-top-style">none</xsl:attribute> +      <xsl:attribute name="border-bottom-style">none</xsl:attribute> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message> +        <xsl:text>Impossible frame on table: </xsl:text> +        <xsl:value-of select="$frame"/> +      </xsl:message> +      <xsl:attribute name="border-left-style">none</xsl:attribute> +      <xsl:attribute name="border-right-style">none</xsl:attribute> +      <xsl:attribute name="border-top-style">none</xsl:attribute> +      <xsl:attribute name="border-bottom-style">none</xsl:attribute> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="border"> +  <xsl:param name="side" select="'left'"/> + +  <xsl:attribute name="border-{$side}-width"> +    <xsl:value-of select="$table.cell.border.thickness"/> +  </xsl:attribute> +  <xsl:attribute name="border-{$side}-style"> +    <xsl:value-of select="$table.cell.border.style"/> +  </xsl:attribute> +  <xsl:attribute name="border-{$side}-color"> +    <xsl:value-of select="$table.cell.border.color"/> +  </xsl:attribute> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="tgroup" name="tgroup"> +  <xsl:if test="not(@cols) or @cols = '' or string(number(@cols)) = 'NaN'"> +    <xsl:message terminate="yes"> +      <xsl:text>Error: CALS tables must specify the number of columns.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:variable name="table.width"> +    <xsl:call-template name="table.width"/> +  </xsl:variable> + +  <xsl:variable name="colspecs"> +    <xsl:choose> +      <xsl:when test="$use.extensions != 0 +                      and $tablecolumns.extension != 0"> +        <xsl:call-template name="generate.colgroup.raw"> +          <xsl:with-param name="cols" select="@cols"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="generate.colgroup"> +          <xsl:with-param name="cols" select="@cols"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="prop-columns" +                select=".//colspec[contains(@colwidth, '*')]"/> +  <xsl:if test="count($prop-columns) != 0 or +                $fop.extensions != 0 or +                $fop1.extensions != 0 or +                $passivetex.extensions != 0"> +    <xsl:attribute name="table-layout">fixed</xsl:attribute> +  </xsl:if> +  +    <xsl:attribute name="width"> +      <xsl:value-of select="$table.width"/> +    </xsl:attribute> +  +  <xsl:choose> +    <xsl:when test="$use.extensions != 0 +                    and $tablecolumns.extension != 0"> +      <xsl:choose> +        <xsl:when test="function-available('stbl:adjustColumnWidths')"> +          <xsl:copy-of select="stbl:adjustColumnWidths($colspecs)"/> +        </xsl:when> +        <xsl:when test="function-available('xtbl:adjustColumnWidths')"> +          <xsl:copy-of select="xtbl:adjustColumnWidths($colspecs)"/> +        </xsl:when> +        <xsl:when test="function-available('ptbl:adjustColumnWidths')"> +          <xsl:copy-of select="ptbl:adjustColumnWidths($colspecs)"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message terminate="yes"> +            <xsl:text>No adjustColumnWidths function available.</xsl:text> +          </xsl:message> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$colspecs"/> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:apply-templates select="thead"/> +  <xsl:apply-templates select="tfoot"/> +  <xsl:apply-templates select="tbody"/> +</xsl:template> + +<xsl:template match="colspec"></xsl:template> + +<xsl:template name="table.width"> + +  <xsl:variable name="numcols"> +    <xsl:call-template name="widest-html-row"> +      <xsl:with-param name="rows" select=".//tr"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="explicit.table.width"> +    <xsl:choose> +      <xsl:when test="self::entrytbl"> +        <xsl:call-template name="pi.dbfo_table-width"/> +      </xsl:when> +      <xsl:when test="self::table or self::informaltable"> +        <xsl:call-template name="pi.dbfo_table-width"/> +      </xsl:when> +      <xsl:otherwise> +        <!-- * no dbfo@table-width PI as a child of this table, so check --> +        <!-- * the parent of this table to see if the table has any --> +        <!-- * sibling dbfo@table-width PIs (FIXME: 2007-07 MikeSmith: we --> +        <!-- * should really instead be checking here just to see if the --> +        <!-- * first preceding sibling of this table is a --> +        <!-- * dbfo@table-width PI) --> +        <xsl:call-template name="pi.dbfo_table-width"> +          <xsl:with-param name="node" select=".."/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="column.sum"> +    <xsl:choose> +      <!-- CALS table --> +      <xsl:when test="@cols"> +        <xsl:if test="count(colspec) = @cols"> +          <xsl:for-each select="colspec"> +            <xsl:if test="position() != 1"> +              <xsl:text> + </xsl:text> +            </xsl:if> +            <xsl:choose> +              <xsl:when test="not(@colwidth)">NOWIDTH</xsl:when> +              <xsl:when test="contains(@colwidth, '*')">NOWIDTH</xsl:when> +              <xsl:otherwise> +                <xsl:value-of select="@colwidth"/> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:for-each> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <!-- HTML table --> +        <xsl:if test="count(col|colgroup/col) = $numcols"> +          <xsl:for-each select="col|colgroup/col"> +            <xsl:if test="position() != 1"> +              <xsl:text> + </xsl:text> +            </xsl:if> +            <xsl:choose> +              <xsl:when test="not(@width)">NOWIDTH</xsl:when> +              <xsl:when test="contains(@width, '%')">NOWIDTH</xsl:when> +              <xsl:otherwise> +                <xsl:value-of select="@width"/> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:for-each> +        </xsl:if> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="column.sum.width"> +    <xsl:if test="not(contains($column.sum, 'NOWIDTH'))"> +      <xsl:value-of select="$column.sum"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="prop-columns" +                select=".//colspec[contains(@colwidth, '*')]"/> + +  <xsl:variable name="table.width"> +    <xsl:choose> +      <xsl:when test="$explicit.table.width != ''"> +        <xsl:value-of select="$explicit.table.width"/> +      </xsl:when> +      <xsl:when test="$column.sum.width != ''"> +        <xsl:value-of select="$column.sum.width"/> +      </xsl:when> +      <xsl:when test="$default.table.width = ''"> +        <xsl:choose> +          <!-- These processors don't support table-layout="auto" --> +          <xsl:when test="$fop.extensions != 0 or +                          $fop1.extensions != 0 or +                          $passivetex.extensions != 0"> +            <xsl:text>100%</xsl:text> +          </xsl:when> +          <!-- Proportional columns imply 100% width --> +          <xsl:when test="count($prop-columns) != 0"> +            <xsl:text>100%</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:text>auto</xsl:text> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$default.table.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:value-of select="$table.width"/> + +</xsl:template> + +<xsl:template match="spanspec"></xsl:template> + +<xsl:template match="thead"> +  <xsl:variable name="tgroup" select="parent::*"/> + +  <fo:table-header start-indent="0pt" end-indent="0pt"> +    <xsl: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> +  </fo:table-header> +</xsl:template> + +<xsl:template match="tfoot"> +  <xsl:variable name="tgroup" select="parent::*"/> + +  <fo:table-footer start-indent="0pt" end-indent="0pt"> +    <xsl: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> + +  </fo:table-footer> +</xsl:template> + +<xsl:template match="tbody"> +  <xsl:variable name="tgroup" select="parent::*"/> + +  <fo:table-body start-indent="0pt" end-indent="0pt"> +    <xsl: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> +  </fo:table-body> +</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> + +      <fo:table-row> +        <xsl:comment> This row intentionally left blank </xsl:comment> +        <fo:table-cell><fo:block/></fo:table-cell> +      </fo:table-row> + +      <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"/> + +  <fo:table-row> +    <xsl:call-template name="table.row.properties"/> +    <xsl:call-template name="anchor"/> + +    <xsl:apply-templates select="(entry|entrytbl)[1]"> +      <xsl:with-param name="spans" select="$spans"/> +    </xsl:apply-templates> +  </fo:table-row> + +  <xsl:if test="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> + +<!-- customize this template to add row properties --> +<xsl:template name="table.row.properties"> +  <xsl:variable name="bgcolor"> +    <xsl:call-template name="pi.dbfo_bgcolor"/> +  </xsl:variable> +  <xsl:if test="$bgcolor != ''"> +    <xsl:attribute name="background-color"> +      <xsl:value-of select="$bgcolor"/> +    </xsl:attribute> +  </xsl:if> + +  <!-- Keep header row with next row --> +  <xsl:if test="ancestor::thead"> +    <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  </xsl:if> + +</xsl:template> + +<xsl:template match="entry|entrytbl" name="entry"> +  <xsl:param name="col" select="1"/> +  <xsl:param name="spans"/> + +  <xsl:variable name="row" select="parent::row"/> +  <xsl:variable name="group" select="$row/parent::*[1]"/> +  <xsl:variable name="frame" select="ancestor::tgroup/parent::*/@frame"/> + +  <xsl:variable name="empty.cell" select="count(node()) = 0"/> + +  <xsl:variable name="named.colnum"> +    <xsl:call-template name="entry.colnum"/> +  </xsl:variable> + +  <xsl:variable name="entry.colnum"> +    <xsl:choose> +      <xsl:when test="$named.colnum > 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="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> +      <!-- Check for morerows too --> +      <xsl:when test="(@morerows and count(ancestor-or-self::row[1]/ +                       following-sibling::row) = @morerows ) +                      and not (ancestor-or-self::thead/following-sibling::tbody +                       or ancestor-or-self::tbody/preceding-sibling::tfoot)"> +        <xsl:value-of select="0"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="inherited.table.attribute"> +          <xsl:with-param name="entry" select="."/> +          <xsl:with-param name="colnum" select="$entry.colnum"/> +          <xsl:with-param name="attribute" select="'rowsep'"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +<!-- +  <xsl:message><xsl:value-of select="."/>: <xsl:value-of select="$rowsep"/></xsl:message> +--> + +  <xsl:variable name="colsep"> +    <xsl:choose> +      <!-- If this is the last column, colsep never applies. --> +      <xsl:when test="$following.spans = ''">0</xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="inherited.table.attribute"> +          <xsl:with-param name="entry" select="."/> +          <xsl:with-param name="colnum" select="$entry.colnum"/> +          <xsl:with-param name="attribute" select="'colsep'"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="valign"> +    <xsl:call-template name="inherited.table.attribute"> +      <xsl:with-param name="entry" select="."/> +      <xsl:with-param name="colnum" select="$entry.colnum"/> +      <xsl:with-param name="attribute" select="'valign'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="align"> +    <xsl:call-template name="inherited.table.attribute"> +      <xsl:with-param name="entry" select="."/> +      <xsl:with-param name="colnum" select="$entry.colnum"/> +      <xsl:with-param name="attribute" select="'align'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="char"> +    <xsl:call-template name="inherited.table.attribute"> +      <xsl:with-param name="entry" select="."/> +      <xsl:with-param name="colnum" select="$entry.colnum"/> +      <xsl:with-param name="attribute" select="'char'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="charoff"> +    <xsl:call-template name="inherited.table.attribute"> +      <xsl:with-param name="entry" select="."/> +      <xsl:with-param name="colnum" select="$entry.colnum"/> +      <xsl:with-param name="attribute" select="'charoff'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))"> +      <xsl:call-template name="entry"> +        <xsl:with-param name="col" select="$col+1"/> +        <xsl:with-param name="spans" select="substring-after($spans,':')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:when test="number($entry.colnum) > $col"> +      <xsl:call-template name="empty.table.cell"> +        <xsl:with-param name="colnum" select="$col"/> +      </xsl:call-template> +      <xsl:call-template name="entry"> +        <xsl:with-param name="col" select="$col+1"/> +        <xsl:with-param name="spans" select="substring-after($spans,':')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:variable name="cell.content"> +        <fo:block> +          <xsl:call-template name="table.cell.block.properties"/> + +          <!-- are we missing any indexterms? --> +          <xsl:if test="not(preceding-sibling::entry) +                        and not(parent::row/preceding-sibling::row)"> +            <!-- this is the first entry of the first row --> +            <xsl:if test="ancestor::thead or +                          (ancestor::tbody +                           and not(ancestor::tbody/preceding-sibling::thead +                                   or ancestor::tbody/preceding-sibling::tbody))"> +              <!-- of the thead or the first tbody --> +              <xsl:apply-templates select="ancestor::tgroup/preceding-sibling::indexterm"/> +            </xsl:if> +          </xsl:if> + +          <!-- +          <xsl:text>(</xsl:text> +          <xsl:value-of select="$rowsep"/> +          <xsl:text>,</xsl:text> +          <xsl:value-of select="$colsep"/> +          <xsl:text>)</xsl:text> +          --> +          <xsl:choose> +            <xsl:when test="$empty.cell"> +              <xsl:text> </xsl:text> +            </xsl:when> +            <xsl:when test="self::entrytbl"> +              <xsl:variable name="prop-columns" +                            select=".//colspec[contains(@colwidth, '*')]"/> +              <fo:table xsl:use-attribute-sets="table.table.properties"> +                <xsl:if test="count($prop-columns) != 0"> +                  <xsl:attribute name="table-layout">fixed</xsl:attribute> +                </xsl:if> +                <xsl:call-template name="tgroup"/> +              </fo:table> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates/> +            </xsl:otherwise> +          </xsl:choose> +        </fo:block> +      </xsl:variable> + +      <xsl:variable name="cell-orientation"> +        <xsl:call-template name="pi.dbfo_orientation"> +          <xsl:with-param name="node" select="ancestor-or-self::entry"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="row-orientation"> +        <xsl:call-template name="pi.dbfo_orientation"> +          <xsl:with-param name="node" select="ancestor-or-self::row"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="cell-width"> +        <xsl:call-template name="pi.dbfo_rotated-width"> +          <xsl:with-param name="node" select="ancestor-or-self::entry"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="row-width"> +        <xsl:call-template name="pi.dbfo_rotated-width"> +          <xsl:with-param name="node" select="ancestor-or-self::row"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="orientation"> +        <xsl:choose> +          <xsl:when test="$cell-orientation != ''"> +            <xsl:value-of select="$cell-orientation"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$row-orientation"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="rotated-width"> +        <xsl:choose> +          <xsl:when test="$cell-width != ''"> +            <xsl:value-of select="$cell-width"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$row-width"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="bgcolor"> +        <xsl:call-template name="pi.dbfo_bgcolor"> +          <xsl:with-param name="node" select="ancestor-or-self::entry"/> +        </xsl:call-template> +      </xsl:variable> + +      <fo:table-cell xsl:use-attribute-sets="table.cell.padding"> +        <xsl:call-template name="table.cell.properties"> +          <xsl:with-param name="bgcolor.pi" select="$bgcolor"/> +          <xsl:with-param name="rowsep.inherit" select="$rowsep"/> +          <xsl:with-param name="colsep.inherit" select="$colsep"/> +          <xsl:with-param name="col" select="$col"/> +          <xsl:with-param name="valign.inherit" select="$valign"/> +          <xsl:with-param name="align.inherit" select="$align"/> +          <xsl:with-param name="char.inherit" select="$char"/> +        </xsl:call-template> + +        <xsl:call-template name="anchor"/> + +        <xsl:if test="@morerows"> +          <xsl:attribute name="number-rows-spanned"> +            <xsl:value-of select="@morerows+1"/> +          </xsl:attribute> +        </xsl:if> + +        <xsl:if test="$entry.colspan > 1"> +          <xsl:attribute name="number-columns-spanned"> +            <xsl:value-of select="$entry.colspan"/> +          </xsl:attribute> +        </xsl:if> + +<!-- +        <xsl:if test="@charoff"> +          <xsl:attribute name="charoff"> +            <xsl:value-of select="@charoff"/> +          </xsl:attribute> +        </xsl:if> +--> + +        <xsl:choose> +          <xsl:when test="$fop.extensions = 0 and $passivetex.extensions = 0 +                          and $orientation != ''"> +            <fo:block-container reference-orientation="{$orientation}"> +              <xsl:if test="$rotated-width != ''"> +                <xsl:attribute name="width"> +                  <xsl:value-of select="$rotated-width"/> +                </xsl:attribute> +              </xsl:if> +              <xsl:copy-of select="$cell.content"/> +            </fo:block-container> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$cell.content"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:table-cell> + +      <xsl:choose> +        <xsl:when test="following-sibling::entry|following-sibling::entrytbl"> +          <xsl:apply-templates select="(following-sibling::entry +                                       |following-sibling::entrytbl)[1]"> +            <xsl:with-param name="col" select="$col+$entry.colspan"/> +            <xsl:with-param name="spans" select="$following.spans"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="finaltd"> +            <xsl:with-param name="spans" select="$following.spans"/> +            <xsl:with-param name="col" select="$col+$entry.colspan"/> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- Expand this template to add properties to any fo:table-cell --> +<xsl:template name="table.cell.properties"> +  <xsl:param name="bgcolor.pi" select="''"/> +  <xsl:param name="rowsep.inherit" select="1"/> +  <xsl:param name="colsep.inherit" select="1"/> +  <xsl:param name="col" select="1"/> +  <xsl:param name="valign.inherit" select="''"/> +  <xsl:param name="align.inherit" select="''"/> +  <xsl:param name="char.inherit" select="''"/> + +  <xsl:choose> +    <xsl:when test="ancestor::tgroup"> +      <xsl:if test="$bgcolor.pi != ''"> +        <xsl:attribute name="background-color"> +          <xsl:value-of select="$bgcolor.pi"/> +        </xsl:attribute> +      </xsl:if> + +      <xsl:if test="$rowsep.inherit > 0"> +        <xsl:call-template name="border"> +          <xsl:with-param name="side" select="'bottom'"/> +        </xsl:call-template> +      </xsl:if> + +      <xsl:if test="$colsep.inherit > 0 and  +                      $col < ancestor::tgroup/@cols"> +        <xsl:call-template name="border"> +          <xsl:with-param name="side" select="'right'"/> +        </xsl:call-template> +      </xsl:if> + +      <xsl:if test="$valign.inherit != ''"> +        <xsl:attribute name="display-align"> +          <xsl:choose> +            <xsl:when test="$valign.inherit='top'">before</xsl:when> +            <xsl:when test="$valign.inherit='middle'">center</xsl:when> +            <xsl:when test="$valign.inherit='bottom'">after</xsl:when> +            <xsl:otherwise> +              <xsl:message> +                <xsl:text>Unexpected valign value: </xsl:text> +                <xsl:value-of select="$valign.inherit"/> +                <xsl:text>, center used.</xsl:text> +              </xsl:message> +              <xsl:text>center</xsl:text> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:attribute> +      </xsl:if> + +      <xsl:choose> +        <xsl:when test="$align.inherit = 'char' and $char.inherit != ''"> +          <xsl:attribute name="text-align"> +            <xsl:value-of select="$char.inherit"/> +          </xsl:attribute> +        </xsl:when> +        <xsl:when test="$align.inherit != ''"> +          <xsl:attribute name="text-align"> +            <xsl:value-of select="$align.inherit"/> +          </xsl:attribute> +        </xsl:when> +      </xsl:choose> + +    </xsl:when> +    <xsl:otherwise> +      <!-- HTML table --> +      <xsl:variable name="border"  +                    select="(ancestor::table | +                             ancestor::informaltable)[last()]/@border"/> +      <xsl:if test="$border != '' and $border != 0"> +        <xsl:attribute name="border"> +          <xsl:value-of select="$table.cell.border.thickness"/> +          <xsl:text> </xsl:text> +          <xsl:value-of select="$table.cell.border.style"/> +          <xsl:text> </xsl:text> +          <xsl:value-of select="$table.cell.border.color"/> +        </xsl:attribute> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<!-- Expand this template to add properties to any cell's block --> +<xsl:template name="table.cell.block.properties"> +  <!-- highlight this entry? --> +  <xsl:if test="ancestor::thead or ancestor::tfoot"> +    <xsl:attribute name="font-weight">bold</xsl:attribute> +  </xsl:if> +</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) > $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.raw"> +  <xsl:param name="cols" select="1"/> +  <xsl:param name="count" select="1"/> + +  <xsl:choose> +    <xsl:when test="$count>$cols"></xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="generate.col.raw"> +        <xsl:with-param name="countcol" select="$count"/> +      </xsl:call-template> +      <xsl:call-template name="generate.colgroup.raw"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="count" select="$count+1"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="generate.colgroup"> +  <xsl:param name="cols" select="1"/> +  <xsl:param name="count" select="1"/> + +  <xsl:choose> +    <xsl:when test="$count>$cols"></xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="generate.col"> +        <xsl:with-param name="countcol" select="$count"/> +      </xsl:call-template> +      <xsl:call-template name="generate.colgroup"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="count" select="$count+1"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="generate.col.raw"> +  <!-- generate the table-column for column countcol --> +  <xsl:param name="countcol">1</xsl:param> +  <xsl:param name="colspecs" select="./colspec"/> +  <xsl:param name="count">1</xsl:param> +  <xsl:param name="colnum">1</xsl:param> + +  <xsl:choose> +    <xsl:when test="$count>count($colspecs)"> +      <fo:table-column column-number="{$countcol}"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="colspec" select="$colspecs[$count=position()]"/> + +      <xsl:variable name="colspec.colnum"> +        <xsl:choose> +          <xsl:when test="$colspec/@colnum"> +            <xsl:value-of select="$colspec/@colnum"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$colnum"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="colspec.colwidth"> +        <xsl:choose> +          <xsl:when test="$colspec/@colwidth"> +            <xsl:value-of select="$colspec/@colwidth"/> +          </xsl:when> +          <xsl:otherwise>1*</xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$colspec.colnum=$countcol"> +          <fo:table-column column-number="{$countcol}"> +            <xsl:attribute name="column-width"> +              <xsl:value-of select="$colspec.colwidth"/> +            </xsl:attribute> +          </fo:table-column> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="generate.col.raw"> +            <xsl:with-param name="countcol" select="$countcol"/> +            <xsl:with-param name="colspecs" select="$colspecs"/> +            <xsl:with-param name="count" select="$count+1"/> +            <xsl:with-param name="colnum"> +              <xsl:choose> +                <xsl:when test="$colspec/@colnum"> +                  <xsl:value-of select="$colspec/@colnum + 1"/> +                </xsl:when> +                <xsl:otherwise> +                  <xsl:value-of select="$colnum + 1"/> +                </xsl:otherwise> +              </xsl:choose> +            </xsl:with-param> +           </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="generate.col"> +  <!-- generate the table-column for column countcol --> +  <xsl:param name="countcol">1</xsl:param> +  <xsl:param name="colspecs" select="./colspec"/> +  <xsl:param name="count">1</xsl:param> +  <xsl:param name="colnum">1</xsl:param> + +  <xsl:choose> +    <xsl:when test="$count>count($colspecs)"> +      <fo:table-column column-number="{$countcol}"> +        <xsl:variable name="colwidth"> +          <xsl:call-template name="calc.column.width"/> +        </xsl:variable> +        <xsl:if test="$colwidth != 'proportional-column-width(1)'"> +          <xsl:attribute name="column-width"> +            <xsl:value-of select="$colwidth"/> +          </xsl:attribute> +        </xsl:if> +      </fo:table-column> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="colspec" select="$colspecs[$count=position()]"/> + +      <xsl:variable name="colspec.colnum"> +        <xsl:choose> +          <xsl:when test="$colspec/@colnum"> +            <xsl:value-of select="$colspec/@colnum"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$colnum"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="colspec.colwidth"> +        <xsl:choose> +          <xsl:when test="$colspec/@colwidth"> +            <xsl:value-of select="$colspec/@colwidth"/> +          </xsl:when> +          <xsl:otherwise>1*</xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$colspec.colnum=$countcol"> +          <fo:table-column column-number="{$countcol}"> +            <xsl:variable name="colwidth"> +              <xsl:call-template name="calc.column.width"> +                <xsl:with-param name="colwidth"> +                  <xsl:value-of select="$colspec.colwidth"/> +                </xsl:with-param> +              </xsl:call-template> +            </xsl:variable> +            <xsl:if test="$colwidth != 'proportional-column-width(1)'"> +              <xsl:attribute name="column-width"> +                <xsl:value-of select="$colwidth"/> +              </xsl:attribute> +            </xsl:if> +          </fo:table-column> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="generate.col"> +            <xsl:with-param name="countcol" select="$countcol"/> +            <xsl:with-param name="colspecs" select="$colspecs"/> +            <xsl:with-param name="count" select="$count+1"/> +            <xsl:with-param name="colnum"> +              <xsl:choose> +                <xsl:when test="$colspec/@colnum"> +                  <xsl:value-of select="$colspec/@colnum + 1"/> +                </xsl:when> +                <xsl:otherwise> +                  <xsl:value-of select="$colnum + 1"/> +                </xsl:otherwise> +              </xsl:choose> +            </xsl:with-param> +           </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<doc:template name="calc.column.width" xmlns=""> +<refpurpose>Calculate an XSL FO table column width specification from a +CALS table column width specification.</refpurpose> + +<refdescription> +<para>CALS expresses table column widths in the following basic +forms:</para> + +<itemizedlist> +<listitem> +<para><emphasis>99.99units</emphasis>, a fixed length specifier.</para> +</listitem> +<listitem> +<para><emphasis>99.99</emphasis>, a fixed length specifier without any units.</para> +</listitem> +<listitem> +<para><emphasis>99.99*</emphasis>, a relative length specifier.</para> +</listitem> +<listitem> +<para><emphasis>99.99*+99.99units</emphasis>, a combination of both.</para> +</listitem> +</itemizedlist> + +<para>The CALS units are points (pt), picas (pi), centimeters (cm), +millimeters (mm), and inches (in). These are the same units as XSL, +except that XSL abbreviates picas "pc" instead of "pi". If a length +specifier has no units, the CALS default unit (pt) is assumed.</para> + +<para>Relative length specifiers are represented in XSL with the +proportional-column-width() function.</para> + +<para>Here are some examples:</para> + +<itemizedlist> +<listitem> +<para>"36pt" becomes "36pt"</para> +</listitem> +<listitem> +<para>"3pi" becomes "3pc"</para> +</listitem> +<listitem> +<para>"36" becomes "36pt"</para> +</listitem> +<listitem> +<para>"3*" becomes "proportional-column-width(3)"</para> +</listitem> +<listitem> +<para>"3*+2pi" becomes "proportional-column-width(3)+2pc"</para> +</listitem> +<listitem> +<para>"1*+2" becomes "proportional-column-width(1)+2pt"</para> +</listitem> +</itemizedlist> +</refdescription> + +<refparameter> +<variablelist> +<varlistentry><term>colwidth</term> +<listitem> +<para>The CALS column width specification.</para> +</listitem> +</varlistentry> +</variablelist> +</refparameter> + +<refreturn> +<para>The XSL column width specification.</para> +</refreturn> +</doc:template> + +<xsl:template name="calc.column.width"> +  <xsl:param name="colwidth">1*</xsl:param> + +  <!-- Ok, the colwidth could have any one of the following forms: --> +  <!--        1*       = proportional width --> +  <!--         *       = same as 1* --> +  <!--     1unit       = 1.0 units wide --> +  <!--         1       = 1pt wide --> +  <!--  1*+1unit       = proportional width + some fixed width --> +  <!--      1*+1       = proportional width + some fixed width --> + +  <!-- If it has a proportional width, translate it to XSL --> +  <xsl:if test="contains($colwidth, '*')"> +    <xsl:text>proportional-column-width(</xsl:text> +    <xsl:choose> +      <xsl:when test="substring-before($colwidth, '*') != ''">  +        <xsl:value-of select="substring-before($colwidth, '*')"/> +      </xsl:when> +      <xsl:otherwise> +         <xsl:text>1.00</xsl:text> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:text>)</xsl:text> +  </xsl:if> + +  <!-- Now grab the non-proportional part of the specification --> +  <xsl:variable name="width-units"> +    <xsl:choose> +      <xsl:when test="contains($colwidth, '*')"> +        <xsl:value-of +             select="normalize-space(substring-after($colwidth, '*'))"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="normalize-space($colwidth)"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Ok, now the width-units could have any one of the following forms: --> +  <!--                 = <empty string> --> +  <!--     1unit       = 1.0 units wide --> +  <!--         1       = 1pt wide --> +  <!-- with an optional leading sign --> + +  <!-- Grab the width part by blanking out the units part and discarding --> +  <!-- whitespace. It's not pretty, but it works. --> +  <xsl:variable name="width" +       select="normalize-space(translate($width-units, +                                         '+-0123456789.abcdefghijklmnopqrstuvwxyz', +                                         '+-0123456789.'))"/> + +  <!-- Grab the units part by blanking out the width part and discarding --> +  <!-- whitespace. It's not pretty, but it works. --> +  <xsl:variable name="units" +       select="normalize-space(translate($width-units, +                                         'abcdefghijklmnopqrstuvwxyz+-0123456789.', +                                         'abcdefghijklmnopqrstuvwxyz'))"/> + +  <!-- Output the width --> +  <xsl:value-of select="$width"/> + +  <!-- Output the units, translated appropriately --> +  <xsl:choose> +    <xsl:when test="$units = 'pi'">pc</xsl:when> +    <xsl:when test="$units = '' and $width != ''">pt</xsl:when> +    <xsl:otherwise><xsl:value-of select="$units"/></xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/task.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/task.xsl.svn-base new file mode 100644 index 0000000..cc29cbd --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/task.xsl.svn-base @@ -0,0 +1,81 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version="1.0"> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="task"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="param.placement" +                select="substring-after(normalize-space($formal.title.placement), +                                        concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="preamble" +                select="*[not(self::title +                              or self::titleabbrev)]"/> + +  <fo:block id="{$id}" +            xsl:use-attribute-sets="formal.object.properties"> +    <xsl:call-template name="anchor"/> + +    <xsl:if test="title and $placement = 'before'"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <xsl:apply-templates select="$preamble"/> + +    <xsl:if test="title and $placement != 'before'"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="task/title"> +  <!-- nop --> +</xsl:template> + +<xsl:template match="tasksummary"> +  <xsl:call-template name="semiformal.object"/> +</xsl:template> + +<xsl:template match="tasksummary/title"/> + +<xsl:template match="taskprerequisites"> +  <xsl:call-template name="semiformal.object"/> +</xsl:template> + +<xsl:template match="taskprerequisites/title"/> + +<xsl:template match="taskrelated"> +  <xsl:call-template name="semiformal.object"/> +</xsl:template> + +<xsl:template match="taskrelated/title"/> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/titlepage.templates.xml.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/titlepage.templates.xml.svn-base new file mode 100644 index 0000000..761422d --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/titlepage.templates.xml.svn-base @@ -0,0 +1,1311 @@ +<!DOCTYPE t:templates [ +<!ENTITY hsize0 "10pt"> +<!ENTITY hsize1 "12pt"> +<!ENTITY hsize2 "14.4pt"> +<!ENTITY hsize3 "17.28pt"> +<!ENTITY hsize4 "20.736pt"> +<!ENTITY hsize5 "24.8832pt"> +<!ENTITY hsize0space "7.5pt"> <!-- 0.75 * hsize0 --> +<!ENTITY hsize1space "9pt"> <!-- 0.75 * hsize1 --> +<!ENTITY hsize2space "10.8pt"> <!-- 0.75 * hsize2 --> +<!ENTITY hsize3space "12.96pt"> <!-- 0.75 * hsize3 --> +<!ENTITY hsize4space "15.552pt"> <!-- 0.75 * hsize4 --> +<!ENTITY hsize5space "18.6624pt"> <!-- 0.75 * hsize5 --> +]> +<t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0" +	     xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param" +             xmlns:fo="http://www.w3.org/1999/XSL/Format" +             xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<t:titlepage t:element="article" t:wrapper="fo:block" +             font-family="{$title.fontset}"> + +  <t:titlepage-content t:side="recto" +	     start-indent="0pt" +             text-align="center"> + +    <title t:named-template="component.title" +	   param:node="ancestor-or-self::article[1]" +	   keep-with-next.within-column="always" +	   font-size="&hsize5;" +	   font-weight="bold"/> + +    <subtitle/> + +    <corpauthor space-before="0.5em" +                font-size="&hsize2;"/> +    <authorgroup space-before="0.5em" +                 font-size="&hsize2;"/> +    <author space-before="0.5em" +            font-size="&hsize2;"/> + +    <othercredit space-before="0.5em"/> +    <releaseinfo space-before="0.5em"/> +    <copyright space-before="0.5em"/> +    <legalnotice text-align="start" +                 margin-left="0.5in" +                 margin-right="0.5in" +                 font-family="{$body.fontset}"/> +    <pubdate space-before="0.5em"/> +    <revision space-before="0.5em"/> +    <revhistory space-before="0.5em"/> +    <abstract space-before="0.5em" +	      text-align="start" +	      margin-left="0.5in" +              margin-right="0.5in" +              font-family="{$body.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="set" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +      <title +	     t:named-template="division.title" +	     param:node="ancestor-or-self::set[1]" +	     text-align="center" +	     font-size="&hsize5;" +	     space-before="&hsize5space;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}" +	      text-align="center"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="book" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:named-template="division.title" +	     param:node="ancestor-or-self::book[1]" +	     text-align="center" +	     font-size="&hsize5;" +	     space-before="&hsize5space;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +      <subtitle +		text-align="center" +		font-size="&hsize4;" +		space-before="&hsize4space;" +		font-family="{$title.fontset}"/> +      <corpauthor font-size="&hsize3;" +		  keep-with-next.within-column="always" +		  space-before="2in"/> +      <authorgroup space-before="2in"/> +      <author font-size="&hsize3;" +	      space-before="&hsize2space;" +	      keep-with-next.within-column="always"/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +      <title +	     t:named-template="book.verso.title" +	     font-size="&hsize2;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +      <corpauthor/> +      <authorgroup t:named-template="verso.authorgroup"/> +      <author/> +      <othercredit/> +      <releaseinfo space-before="0.5em"/> +      <pubdate space-before="1em"/> +      <copyright/> +      <abstract/> +      <legalnotice font-size="8pt"/> +  </t:titlepage-content> + +  <t:titlepage-separator> +      <fo:block break-after="page"/> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +      <fo:block break-after="page"/> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="part" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +      <title +	     t:named-template="division.title" +	     param:node="ancestor-or-self::part[1]" +	     text-align="center" +	     font-size="&hsize5;" +	     space-before="&hsize5space;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    <subtitle +	      text-align="center" +	      font-size="&hsize4;" +	      space-before="&hsize4space;" +	      font-weight='bold' +	      font-style='italic' +	      font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="partintro" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   text-align="center" +	   font-size="&hsize5;" +	   font-weight="bold" +	   space-before="1em" +	   font-family="{$title.fontset}"/> +    <subtitle +	      text-align="center" +	      font-size="&hsize2;" +	      font-weight="bold" +	      font-style="italic" +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="reference" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +      <title +	     t:named-template="division.title" +	     param:node="ancestor-or-self::reference[1]" +	     text-align="center" +	     font-size="&hsize5;" +	     space-before="&hsize5space;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}" +	      text-align="center"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsynopsisdiv" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsection" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsect1" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsect2" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsect3" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="dedication" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::dedication[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="preface" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::preface[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +      <corpauthor/> +      <authorgroup/> +      <author/> +      <othercredit/> +      <releaseinfo/> +      <copyright/> +      <legalnotice/> +      <pubdate/> +      <revision/> +      <revhistory/> +      <abstract/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="chapter" t:wrapper="fo:block" +               font-family="{$title.fontset}"> +    <t:titlepage-content t:side="recto" margin-left="{$title.margin.left}"> +      <title t:named-template="component.title" +	     param:node="ancestor-or-self::chapter[1]" +	     font-size="&hsize5;" +	     font-weight="bold"/> + +      <subtitle space-before="0.5em" +		font-style="italic" +		font-size="&hsize2;" +		font-weight="bold"/> + +      <corpauthor  space-before="0.5em" +	           space-after="0.5em" +                   font-size="&hsize2;"/> + +      <authorgroup space-before="0.5em" +	           space-after="0.5em" +                   font-size="&hsize2;"/> + +      <author      space-before="0.5em" +	           space-after="0.5em" +                   font-size="&hsize2;"/> + +      <othercredit/> +      <releaseinfo/> +      <copyright/> +      <legalnotice/> +      <pubdate/> +      <revision/> +      <revhistory/> +      <abstract/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="appendix" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:named-template="component.title" +	     param:node="ancestor-or-self::appendix[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +      <subtitle +		font-family="{$title.fontset}"/> +      <corpauthor/> +      <authorgroup/> +      <author/> +      <othercredit/> +      <releaseinfo/> +      <copyright/> +      <legalnotice/> +      <pubdate/> +      <revision/> +      <revhistory/> +      <abstract/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="section" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect1" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect2" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect3" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect4" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect5" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="simplesect" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="bibliography" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::bibliography[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="bibliodiv" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title t:named-template="component.title" +	     param:node="ancestor-or-self::bibliodiv[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize4;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="glossary" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::glossary[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="glossdiv" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title t:named-template="component.title" +	     param:node="ancestor-or-self::glossdiv[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize4;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="index" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::index[1]" +             param:pagewide="1" +	     margin-left="0pt" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <!-- The indexdiv.title template is used so that manual and --> +  <!-- automatically generated indexdiv titles get the same --> +  <!-- formatting. --> + +  <t:titlepage t:element="indexdiv" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title t:force="1" +	     t:named-template="indexdiv.title" +	     param:title="title"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="setindex" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::setindex[1]" +             param:pagewide="1" +	     margin-left="0pt" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="colophon" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::colophon[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="sidebar" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title  +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> +<t:titlepage t:element="qandaset" t:wrapper="fo:block" +             font-family="{$title.fontset}"> + +  <t:titlepage-content t:side="recto" +	     start-indent="0pt" +             text-align="center"> + +    <title t:named-template="component.title" +	   param:node="ancestor-or-self::qandaset[1]" +	   keep-with-next.within-column="always" +	   font-size="&hsize5;" +	   font-weight="bold"/> + +    <subtitle/> + +    <corpauthor space-before="0.5em" +                font-size="&hsize2;"/> +    <authorgroup space-before="0.5em" +                 font-size="&hsize2;"/> +    <author space-before="0.5em" +            font-size="&hsize2;"/> + +    <othercredit space-before="0.5em"/> +    <releaseinfo space-before="0.5em"/> +    <copyright space-before="0.5em"/> +    <legalnotice text-align="start" +                 margin-left="0.5in" +                 margin-right="0.5in" +                 font-family="{$body.fontset}"/> +    <pubdate space-before="0.5em"/> +    <revision space-before="0.5em"/> +    <revhistory space-before="0.5em"/> +    <abstract space-before="0.5em" +	      text-align="start" +	      margin-left="0.5in" +              margin-right="0.5in" +              font-family="{$body.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="table.of.contents" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'TableofContents'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.tables" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofTables'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.figures" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofFigures'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.examples" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofExamples'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.equations" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofEquations'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.procedures" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofProcedures'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.unknowns" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofUnknown'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +</t:templates> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/titlepage.templates.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/titlepage.templates.xsl.svn-base new file mode 100644 index 0000000..4573540 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/titlepage.templates.xsl.svn-base @@ -0,0 +1,5094 @@ +<?xml version="1.0"?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl"> + +<!-- This stylesheet was created by template/titlepage.xsl--> + +<xsl:template name="article.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="articleinfo/title"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/> +    </xsl:when> +    <xsl:when test="artheader/title"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="articleinfo/subtitle"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="artheader/subtitle"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="article.titlepage.verso"> +</xsl:template> + +<xsl:template name="article.titlepage.separator"> +</xsl:template> + +<xsl:template name="article.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="article.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="article.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="article.titlepage.before.recto"/> +      <xsl:call-template name="article.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="article.titlepage.before.verso"/> +      <xsl:call-template name="article.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="article.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::article[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="set.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="setinfo/title"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="setinfo/subtitle"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="set.titlepage.verso"> +</xsl:template> + +<xsl:template name="set.titlepage.separator"> +</xsl:template> + +<xsl:template name="set.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="set.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="set.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="set.titlepage.before.recto"/> +      <xsl:call-template name="set.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="set.titlepage.before.verso"/> +      <xsl:call-template name="set.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="set.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::set[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.fontset}" text-align="center"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="book.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="bookinfo/title"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="bookinfo/subtitle"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/> +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/> +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/> +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/> +</xsl:template> + +<xsl:template name="book.titlepage.verso"> +  <xsl:choose> +    <xsl:when test="bookinfo/title"> +      <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/corpauthor"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/authorgroup"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/author"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/othercredit"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/abstract"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/abstract"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/legalnotice"/> +</xsl:template> + +<xsl:template name="book.titlepage.separator"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/> +</xsl:template> + +<xsl:template name="book.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/> +</xsl:template> + +<xsl:template name="book.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="book.titlepage.before.recto"/> +      <xsl:call-template name="book.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="book.titlepage.before.verso"/> +      <xsl:call-template name="book.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="book.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::book[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" font-size="17.28pt" keep-with-next.within-column="always" space-before="2in"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="2in"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" font-size="17.28pt" space-before="10.8pt" keep-with-next.within-column="always"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="14.4pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="book.verso.title"> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:call-template name="verso.authorgroup"> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="1em"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="8pt"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="part.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="partinfo/title"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="partinfo/subtitle"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="part.titlepage.verso"> +</xsl:template> + +<xsl:template name="part.titlepage.separator"> +</xsl:template> + +<xsl:template name="part.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="part.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="part.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="part.titlepage.before.recto"/> +      <xsl:call-template name="part.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="part.titlepage.before.verso"/> +      <xsl:call-template name="part.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="part.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="part.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::part[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="partintro.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="partintroinfo/title"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="partintroinfo/subtitle"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="partintro.titlepage.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage.separator"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="partintro.titlepage.before.recto"/> +      <xsl:call-template name="partintro.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="partintro.titlepage.before.verso"/> +      <xsl:call-template name="partintro.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="partintro.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="24.8832pt" font-weight="bold" space-before="1em" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="14.4pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="reference.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="referenceinfo/title"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="referenceinfo/subtitle"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="reference.titlepage.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage.separator"> +</xsl:template> + +<xsl:template name="reference.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="reference.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="reference.titlepage.before.recto"/> +      <xsl:call-template name="reference.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="reference.titlepage.before.verso"/> +      <xsl:call-template name="reference.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="reference.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::reference[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" font-family="{$title.fontset}" text-align="center"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="refsynopsisdivinfo/title"> +      <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="refsynopsisdivinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="refsynopsisdiv.titlepage.before.recto"/> +      <xsl:call-template name="refsynopsisdiv.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="refsynopsisdiv.titlepage.before.verso"/> +      <xsl:call-template name="refsynopsisdiv.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="refsynopsisdiv.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsynopsisdiv.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsynopsisdiv.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsynopsisdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsynopsisdiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsection.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="refsectioninfo/title"> +      <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="refsectioninfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="refsection.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsection.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsection.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsection.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsection.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="refsection.titlepage.before.recto"/> +      <xsl:call-template name="refsection.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="refsection.titlepage.before.verso"/> +      <xsl:call-template name="refsection.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="refsection.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsection.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsection.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsection.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsection.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsection.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsect1.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="refsect1info/title"> +      <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="refsect1info/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="refsect1.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsect1.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsect1.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsect1.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsect1.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="refsect1.titlepage.before.recto"/> +      <xsl:call-template name="refsect1.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="refsect1.titlepage.before.verso"/> +      <xsl:call-template name="refsect1.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="refsect1.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsect1.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsect1.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect1.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsect2.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="refsect2info/title"> +      <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="refsect2info/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="refsect2.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsect2.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsect2.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsect2.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsect2.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="refsect2.titlepage.before.recto"/> +      <xsl:call-template name="refsect2.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="refsect2.titlepage.before.verso"/> +      <xsl:call-template name="refsect2.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="refsect2.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsect2.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsect2.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect2.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsect3.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="refsect3info/title"> +      <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="refsect3info/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="refsect3.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsect3.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsect3.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsect3.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsect3.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="refsect3.titlepage.before.recto"/> +      <xsl:call-template name="refsect3.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="refsect3.titlepage.before.verso"/> +      <xsl:call-template name="refsect3.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="refsect3.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsect3.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsect3.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect3.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="dedication.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="dedicationinfo/subtitle"> +      <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="dedication.titlepage.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage.separator"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="dedication.titlepage.before.recto"/> +      <xsl:call-template name="dedication.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="dedication.titlepage.before.verso"/> +      <xsl:call-template name="dedication.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="dedication.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="preface.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::preface[1]"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="prefaceinfo/subtitle"> +      <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="preface.titlepage.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage.separator"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="preface.titlepage.before.recto"/> +      <xsl:call-template name="preface.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="preface.titlepage.before.verso"/> +      <xsl:call-template name="preface.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="preface.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="chapter.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="chapterinfo/title"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="chapterinfo/subtitle"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="chapter.titlepage.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage.separator"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="chapter.titlepage.before.recto"/> +      <xsl:call-template name="chapter.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block margin-left="{$title.margin.left}"><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="chapter.titlepage.before.verso"/> +      <xsl:call-template name="chapter.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="chapter.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="24.8832pt" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" font-style="italic" font-size="14.4pt" font-weight="bold"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="appendix.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="appendixinfo/title"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="appendixinfo/subtitle"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="appendix.titlepage.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage.separator"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="appendix.titlepage.before.recto"/> +      <xsl:call-template name="appendix.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="appendix.titlepage.before.verso"/> +      <xsl:call-template name="appendix.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="appendix.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::appendix[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="section.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sectioninfo/title"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sectioninfo/subtitle"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="section.titlepage.verso"> +</xsl:template> + +<xsl:template name="section.titlepage.separator"> +</xsl:template> + +<xsl:template name="section.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="section.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="section.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="section.titlepage.before.recto"/> +      <xsl:call-template name="section.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="section.titlepage.before.verso"/> +      <xsl:call-template name="section.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="section.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect1.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sect1info/title"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sect1info/subtitle"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect1.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sect1.titlepage.before.recto"/> +      <xsl:call-template name="sect1.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sect1.titlepage.before.verso"/> +      <xsl:call-template name="sect1.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sect1.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect2.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sect2info/title"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sect2info/subtitle"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect2.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sect2.titlepage.before.recto"/> +      <xsl:call-template name="sect2.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sect2.titlepage.before.verso"/> +      <xsl:call-template name="sect2.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sect2.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect3.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sect3info/title"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sect3info/subtitle"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect3.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sect3.titlepage.before.recto"/> +      <xsl:call-template name="sect3.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sect3.titlepage.before.verso"/> +      <xsl:call-template name="sect3.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sect3.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect4.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sect4info/title"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sect4info/subtitle"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect4.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sect4.titlepage.before.recto"/> +      <xsl:call-template name="sect4.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sect4.titlepage.before.verso"/> +      <xsl:call-template name="sect4.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sect4.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect5.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sect5info/title"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sect5info/subtitle"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect5.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sect5.titlepage.before.recto"/> +      <xsl:call-template name="sect5.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sect5.titlepage.before.verso"/> +      <xsl:call-template name="sect5.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sect5.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="simplesect.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="simplesectinfo/title"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="simplesectinfo/subtitle"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="simplesect.titlepage.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.separator"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="simplesect.titlepage.before.recto"/> +      <xsl:call-template name="simplesect.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="simplesect.titlepage.before.verso"/> +      <xsl:call-template name="simplesect.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="simplesect.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="bibliography.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="bibliographyinfo/subtitle"> +      <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="bibliography.titlepage.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.separator"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="bibliography.titlepage.before.recto"/> +      <xsl:call-template name="bibliography.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="bibliography.titlepage.before.verso"/> +      <xsl:call-template name="bibliography.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="bibliography.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="bibliodivinfo/title"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="bibliodivinfo/subtitle"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="bibliodiv.titlepage.before.recto"/> +      <xsl:call-template name="bibliodiv.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="bibliodiv.titlepage.before.verso"/> +      <xsl:call-template name="bibliodiv.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="bibliodiv.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="bibliodiv.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="bibliodiv.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="bibliodiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::bibliodiv[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliodiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="bibliodiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="glossary.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="glossaryinfo/subtitle"> +      <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="glossary.titlepage.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage.separator"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="glossary.titlepage.before.recto"/> +      <xsl:call-template name="glossary.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="glossary.titlepage.before.verso"/> +      <xsl:call-template name="glossary.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="glossary.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="glossdivinfo/title"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="glossdivinfo/subtitle"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="glossdiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="glossdiv.titlepage.before.recto"/> +      <xsl:call-template name="glossdiv.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="glossdiv.titlepage.before.verso"/> +      <xsl:call-template name="glossdiv.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="glossdiv.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="glossdiv.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="glossdiv.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="glossdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::glossdiv[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="glossdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="glossdiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="index.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::index[1]"/> +<xsl:with-param name="pagewide" select="1"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="indexinfo/subtitle"> +      <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="index.titlepage.verso"> +</xsl:template> + +<xsl:template name="index.titlepage.separator"> +</xsl:template> + +<xsl:template name="index.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="index.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="index.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="index.titlepage.before.recto"/> +      <xsl:call-template name="index.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="index.titlepage.before.verso"/> +      <xsl:call-template name="index.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="index.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style"> +<xsl:call-template name="indexdiv.title"> +<xsl:with-param name="title" select="title"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="indexdivinfo/subtitle"> +      <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="indexdivinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="indexdiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="indexdiv.titlepage.before.recto"/> +      <xsl:call-template name="indexdiv.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="indexdiv.titlepage.before.verso"/> +      <xsl:call-template name="indexdiv.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="indexdiv.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="indexdiv.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="indexdiv.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="indexdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="indexdiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="setindex.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/> +<xsl:with-param name="pagewide" select="1"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="setindexinfo/subtitle"> +      <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="setindex.titlepage.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage.separator"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="setindex.titlepage.before.recto"/> +      <xsl:call-template name="setindex.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="setindex.titlepage.before.verso"/> +      <xsl:call-template name="setindex.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="setindex.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="colophon.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::colophon[1]"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="colophoninfo/subtitle"> +      <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="colophoninfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="colophon.titlepage.verso"> +</xsl:template> + +<xsl:template name="colophon.titlepage.separator"> +</xsl:template> + +<xsl:template name="colophon.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="colophon.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="colophon.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="colophon.titlepage.before.recto"/> +      <xsl:call-template name="colophon.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="colophon.titlepage.before.verso"/> +      <xsl:call-template name="colophon.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="colophon.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="colophon.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="colophon.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="colophon.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="colophon.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sidebar.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sidebarinfo/title"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sidebarinfo/subtitle"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="sidebar.titlepage.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.separator"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sidebar.titlepage.before.recto"/> +      <xsl:call-template name="sidebar.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sidebar.titlepage.before.verso"/> +      <xsl:call-template name="sidebar.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sidebar.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}" font-weight="bold"> +<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="qandaset.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="qandasetinfo/title"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/title"/> +    </xsl:when> +    <xsl:when test="blockinfo/title"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="qandasetinfo/subtitle"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="blockinfo/subtitle"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/corpauthor"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/corpauthor"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/authorgroup"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/authorgroup"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/author"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/author"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/othercredit"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/othercredit"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/releaseinfo"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/releaseinfo"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/copyright"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/copyright"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/legalnotice"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/legalnotice"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/pubdate"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/pubdate"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revision"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revision"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revhistory"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revhistory"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/abstract"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/abstract"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="qandaset.titlepage.verso"> +</xsl:template> + +<xsl:template name="qandaset.titlepage.separator"> +</xsl:template> + +<xsl:template name="qandaset.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="qandaset.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="qandaset.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="qandaset.titlepage.before.recto"/> +      <xsl:call-template name="qandaset.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="qandaset.titlepage.before.verso"/> +      <xsl:call-template name="qandaset.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="qandaset.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="qandaset.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="qandaset.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::qandaset[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="table.of.contents.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'TableofContents'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.verso"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.separator"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="table.of.contents.titlepage.before.recto"/> +      <xsl:call-template name="table.of.contents.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="table.of.contents.titlepage.before.verso"/> +      <xsl:call-template name="table.of.contents.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="table.of.contents.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="table.of.contents.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="table.of.contents.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.tables.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofTables'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.tables.titlepage.before.recto"/> +      <xsl:call-template name="list.of.tables.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.tables.titlepage.before.verso"/> +      <xsl:call-template name="list.of.tables.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.tables.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.tables.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.tables.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.figures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofFigures'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.figures.titlepage.before.recto"/> +      <xsl:call-template name="list.of.figures.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.figures.titlepage.before.verso"/> +      <xsl:call-template name="list.of.figures.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.figures.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.figures.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.figures.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.examples.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofExamples'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.examples.titlepage.before.recto"/> +      <xsl:call-template name="list.of.examples.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.examples.titlepage.before.verso"/> +      <xsl:call-template name="list.of.examples.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.examples.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.examples.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.examples.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.equations.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofEquations'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.equations.titlepage.before.recto"/> +      <xsl:call-template name="list.of.equations.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.equations.titlepage.before.verso"/> +      <xsl:call-template name="list.of.equations.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.equations.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.equations.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.equations.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.procedures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofProcedures'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.procedures.titlepage.before.recto"/> +      <xsl:call-template name="list.of.procedures.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.procedures.titlepage.before.verso"/> +      <xsl:call-template name="list.of.procedures.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.procedures.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.procedures.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.procedures.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.unknowns.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofUnknown'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.unknowns.titlepage.before.recto"/> +      <xsl:call-template name="list.of.unknowns.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.unknowns.titlepage.before.verso"/> +      <xsl:call-template name="list.of.unknowns.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.unknowns.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.unknowns.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.unknowns.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/titlepage.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/titlepage.xsl.svn-base new file mode 100644 index 0000000..6797565 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/titlepage.xsl.svn-base @@ -0,0 +1,738 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:attribute-set name="book.titlepage.recto.style"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$title.fontset"/> +  </xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="font-size">12pt</xsl:attribute> +  <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="book.titlepage.verso.style"> +  <xsl:attribute name="font-size">10pt</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="article.titlepage.recto.style"/> +<xsl:attribute-set name="article.titlepage.verso.style"/> + +<xsl:attribute-set name="set.titlepage.recto.style"/> +<xsl:attribute-set name="set.titlepage.verso.style"/> + +<xsl:attribute-set name="part.titlepage.recto.style"> +  <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="part.titlepage.verso.style"/> + +<xsl:attribute-set name="partintro.titlepage.recto.style"/> +<xsl:attribute-set name="partintro.titlepage.verso.style"/> + +<xsl:attribute-set name="reference.titlepage.recto.style"/> +<xsl:attribute-set name="reference.titlepage.verso.style"/> + +<xsl:attribute-set name="dedication.titlepage.recto.style"/> +<xsl:attribute-set name="dedication.titlepage.verso.style"/> + +<xsl:attribute-set name="preface.titlepage.recto.style"/> +<xsl:attribute-set name="preface.titlepage.verso.style"/> + +<xsl:attribute-set name="chapter.titlepage.recto.style"/> +<xsl:attribute-set name="chapter.titlepage.verso.style"/> + +<xsl:attribute-set name="appendix.titlepage.recto.style"/> +<xsl:attribute-set name="appendix.titlepage.verso.style"/> + +<xsl:attribute-set name="bibliography.titlepage.recto.style"/> +<xsl:attribute-set name="bibliography.titlepage.verso.style"/> + +<xsl:attribute-set name="bibliodiv.titlepage.recto.style"/> +<xsl:attribute-set name="bibliodiv.titlepage.verso.style"/> + +<xsl:attribute-set name="glossary.titlepage.recto.style"/> +<xsl:attribute-set name="glossary.titlepage.verso.style"/> + +<xsl:attribute-set name="glossdiv.titlepage.recto.style"/> +<xsl:attribute-set name="glossdiv.titlepage.verso.style"/> + +<xsl:attribute-set name="index.titlepage.recto.style"/> +<xsl:attribute-set name="index.titlepage.verso.style"/> + +<xsl:attribute-set name="setindex.titlepage.recto.style"/> +<xsl:attribute-set name="setindex.titlepage.verso.style"/> + +<xsl:attribute-set name="indexdiv.titlepage.recto.style"/> +<xsl:attribute-set name="indexdiv.titlepage.verso.style"/> + +<xsl:attribute-set name="colophon.titlepage.recto.style"/> +<xsl:attribute-set name="colophon.titlepage.verso.style"/> + +<xsl:attribute-set name="sidebar.titlepage.recto.style"/> +<xsl:attribute-set name="sidebar.titlepage.verso.style"/> + +<xsl:attribute-set name="qandaset.titlepage.recto.style"/> +<xsl:attribute-set name="qandaset.titlepage.verso.style"/> + +<xsl:attribute-set name="section.titlepage.recto.style"> +  <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="section.titlepage.verso.style"> +  <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="sect1.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect1.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect2.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect2.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect3.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect3.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect4.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect4.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect5.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect5.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="simplesect.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="simplesect.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refnamediv.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refnamediv.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsynopsisdiv.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsynopsisdiv.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsection.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsection.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsect1.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsect1.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsect2.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsect2.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsect3.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsect3.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/> +<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.procedures.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.procedures.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="titlepage.mode"> +  <!-- if an element isn't found in this mode, try the default mode --> +  <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="abbrev" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="abstract" mode="titlepage.mode"> +  <fo:block> +    <xsl: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:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="abstract/title" mode="titlepage.mode"/> + +<xsl:template match="abstract/title" mode="titlepage.abstract.title.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="address" mode="titlepage.mode"> +  <!-- use the normal address handling code --> +  <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="affiliation" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="artpagenums" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="author" mode="titlepage.mode"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:call-template name="person.name"/> +    <xsl:if test="affiliation/orgname"> +      <xsl:text>, </xsl:text> +      <xsl:apply-templates select="affiliation/orgname" mode="titlepage.mode"/> +    </xsl:if> +    <xsl:if test="email|affiliation/address/email"> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="(email|affiliation/address/email)[1]"/> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="authorblurb" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="authorgroup" mode="titlepage.mode"> +  <fo:wrapper> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:wrapper> +</xsl:template> + +<xsl:template match="authorinitials" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="bibliomisc" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="bibliomset" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="collab" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="confgroup" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="confdates" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="conftitle" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="confnum" mode="titlepage.mode"> +  <!-- suppress --> +</xsl:template> + +<xsl:template match="contractnum" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="contractsponsor" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="contrib" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="copyright" mode="titlepage.mode"> +  <xsl:call-template name="gentext"> +    <xsl:with-param name="key" select="'Copyright'"/> +  </xsl:call-template> +  <xsl:call-template name="gentext.space"/> +  <xsl:call-template name="dingbat"> +    <xsl:with-param name="dingbat">copyright</xsl:with-param> +  </xsl:call-template> +  <xsl:call-template name="gentext.space"/> +  <xsl:call-template name="copyright.years"> +    <xsl:with-param name="years" select="year"/> +    <xsl:with-param name="print.ranges" select="$make.year.ranges"/> +    <xsl:with-param name="single.year.ranges" +                    select="$make.single.year.ranges"/> +  </xsl:call-template> +  <xsl:call-template name="gentext.space"/> +  <xsl:apply-templates select="holder" mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="year" mode="titlepage.mode"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="holder" mode="titlepage.mode"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="corpauthor" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="corpcredit" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="corpname" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="date" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="edition" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +  <xsl:call-template name="gentext.space"/> +  <xsl:call-template name="gentext"> +    <xsl:with-param name="key" select="'Edition'"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="editor" mode="titlepage.mode"> +  <!-- The first editor is dealt with in the following template, +       which in turn displays all editors of the same mode. --> +</xsl:template> + +<xsl:template match="editor[1]" priority="2" mode="titlepage.mode"> +  <xsl:call-template name="gentext.edited.by"/> +  <xsl:call-template name="gentext.space"/> +  <xsl:call-template name="person.name.list"> +    <xsl:with-param name="person.list" select="../editor"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="firstname" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="graphic" mode="titlepage.mode"> +  <!-- use the normal graphic handling code --> +  <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="honorific" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="isbn" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="issn" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="biblioid" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="itermset" mode="titlepage.mode"> +  <!-- discard --> +</xsl:template> + +<xsl:template match="invpartnumber" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="issuenum" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="jobtitle" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="keywordset" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="legalnotice" mode="titlepage.mode"> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:if test="title"> <!-- FIXME: add param for using default title? --> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="legalnotice/title" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="lineage" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="modespec" mode="titlepage.mode"> +  <!-- discard --> +</xsl:template> + +<xsl:template match="orgdiv" mode="titlepage.mode"> +  <xsl:if test="preceding-sibling::*[1][self::orgname]"> +    <xsl:text> </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="orgname" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="othercredit" mode="titlepage.mode"> +  <xsl:variable name="contrib" select="string(contrib)"/> +  <xsl:choose> +    <xsl:when test="contrib"> +      <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])"> +        <fo:block> +          <xsl:apply-templates mode="titlepage.mode" select="contrib"/> +          <xsl:text>: </xsl:text> +          <xsl:call-template name="person.name"/> +          <xsl:apply-templates mode="titlepage.mode" select="affiliation"/> +          <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/> +        </fo:block> +      </xsl:if> +    </xsl:when> +    <xsl:otherwise> +      <fo:block><xsl:call-template name="person.name"/></fo:block> +      <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="othercredit" mode="titlepage.othercredits"> +  <xsl:text>, </xsl:text> +  <xsl:call-template name="person.name"/> +</xsl:template> + +<xsl:template match="othername" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="pagenums" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="printhistory" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="productname" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="productnumber" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="pubdate" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="publisher" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="publishername" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="pubsnumber" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="releaseinfo" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revhistory" mode="titlepage.mode"> + +  <xsl:variable name="explicit.table.width"> +    <xsl:call-template name="pi.dbfo_table-width"/> +  </xsl:variable> + +  <xsl:variable name="table.width"> +    <xsl:choose> +      <xsl:when test="$explicit.table.width != ''"> +        <xsl:value-of select="$explicit.table.width"/> +      </xsl:when> +      <xsl:when test="$default.table.width = ''"> +        <xsl:text>100%</xsl:text> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$default.table.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:table table-layout="fixed" width="{$table.width}" xsl:use-attribute-sets="revhistory.table.properties"> +    <fo:table-column column-number="1" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="2" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="3" column-width="proportional-column-width(1)"/> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <fo:table-row> +        <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties"> +          <fo:block xsl:use-attribute-sets="revhistory.title.properties"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'RevHistory'"/> +            </xsl:call-template> +          </fo:block> +        </fo:table-cell> +      </fo:table-row> +      <xsl:apply-templates mode="titlepage.mode"/> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template match="revhistory/revision" mode="titlepage.mode"> +  <xsl:variable name="revnumber" select="revnumber"/> +  <xsl:variable name="revdate"   select="date"/> +  <xsl:variable name="revauthor" select="authorinitials|author"/> +  <xsl:variable name="revremark" select="revremark|revdescription"/> +  <fo:table-row> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:if test="$revnumber"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'Revision'"/> +          </xsl:call-template> +          <xsl:call-template name="gentext.space"/> +          <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/> +        </xsl:if> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:for-each select="$revauthor"> +          <xsl:apply-templates select="." mode="titlepage.mode"/> +          <xsl:if test="position() != last()"> +            <xsl:text>, </xsl:text> +          </xsl:if> +        </xsl:for-each> +      </fo:block> +    </fo:table-cell> +  </fo:table-row> +  <xsl:if test="$revremark"> +    <fo:table-row> +      <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties"> +        <fo:block> +          <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/> +        </fo:block> +      </fo:table-cell> +    </fo:table-row> +  </xsl:if> +</xsl:template> + +<xsl:template match="revision/revnumber" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/date" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/authorinitials" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/author" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/revremark" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/revdescription" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="seriesvolnums" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="shortaffil" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subjectset" mode="titlepage.mode"> +  <!-- discard --> +</xsl:template> + +<xsl:template match="subtitle" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="surname" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="titleabbrev" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="volumenum" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Book templates --> + +<!-- Note: these templates cannot use *.titlepage.recto.mode or +     *.titlepage.verso.mode. If they do then subsequent use of a custom +     titlepage.templates.xml file will not work correctly. --> + +<!-- book recto --> + +<xsl:template match="bookinfo/authorgroup|info/authorgroup" +              mode="titlepage.mode" priority="2"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<!-- book verso --> + +<xsl:template name="book.verso.title"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> + +    <xsl:if test="following-sibling::subtitle +                  |following-sibling::info/subtitle +                  |following-sibling::bookinfo/subtitle"> +      <xsl:text>: </xsl:text> + +      <xsl:apply-templates select="(following-sibling::subtitle +                                   |following-sibling::info/subtitle +                                   |following-sibling::bookinfo/subtitle)[1]" +                           mode="book.verso.subtitle.mode"/> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="book.verso.subtitle.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +  <xsl:if test="following-sibling::subtitle"> +    <xsl:text>: </xsl:text> +    <xsl:apply-templates select="following-sibling::subtitle[1]" +                         mode="book.verso.subtitle.mode"/> +  </xsl:if> +</xsl:template> + +<xsl:template name="verso.authorgroup"> +  <fo:block> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'by'"/> +    </xsl:call-template> +    <xsl:text> </xsl:text> +    <xsl:call-template name="person.name.list"> +      <xsl:with-param name="person.list" select="author|corpauthor|editor"/> +    </xsl:call-template> +  </fo:block> +  <xsl:apply-templates select="othercredit" mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="bookinfo/author|info/author" +              mode="titlepage.mode" priority="2"> +  <fo:block> +    <xsl:call-template name="person.name"/> +  </fo:block> +</xsl:template> + +<xsl:template match="bookinfo/corpauthor|info/corpauthor" +              mode="titlepage.mode" priority="2"> +  <fo:block> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="bookinfo/pubdate|info/pubdate" +              mode="titlepage.mode" priority="2"> +  <fo:block> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'published'"/> +    </xsl:call-template> +    <xsl:text> </xsl:text> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/toc.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/toc.xsl.svn-base new file mode 100644 index 0000000..40d9b73 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/toc.xsl.svn-base @@ -0,0 +1,280 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- FIXME: in the contexts where <toc> can occur, I think it's always +     the case that a page-sequence is required. Is that true? --> + +<xsl:template match="toc"> +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="*"> +      <xsl:if test="$process.source.toc != 0"> +        <!-- if the toc isn't empty, process it --> +        <fo:page-sequence hyphenate="{$hyphenate}" +                          master-reference="{$master-reference}"> +          <xsl:attribute name="language"> +            <xsl:call-template name="l10n.language"/> +          </xsl:attribute> +          <xsl:attribute name="format"> +            <xsl:call-template name="page.number.format"> +              <xsl:with-param name="element" select="'toc'"/> +              <xsl:with-param name="master-reference"  +                              select="$master-reference"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:attribute name="initial-page-number"> +            <xsl:call-template name="initial.page.number"> +              <xsl:with-param name="element" select="'toc'"/> +              <xsl:with-param name="master-reference"  +                              select="$master-reference"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:attribute name="force-page-count"> +            <xsl:call-template name="force.page.count"> +              <xsl:with-param name="master-reference"  +	                      select="$master-reference"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:attribute name="hyphenation-character"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-character'"/> +            </xsl:call-template> +          </xsl:attribute> +          <xsl:attribute name="hyphenation-push-character-count"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +            </xsl:call-template> +          </xsl:attribute> +          <xsl:attribute name="hyphenation-remain-character-count"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:apply-templates select="." mode="running.head.mode"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:apply-templates> +          <xsl:apply-templates select="." mode="running.foot.mode"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:apply-templates> + +          <fo:flow flow-name="xsl-region-body"> +            <xsl:call-template name="set.flow.properties"> +              <xsl:with-param name="element" select="local-name(.)"/> +              <xsl:with-param name="master-reference"  +                              select="$master-reference"/> +            </xsl:call-template> + +            <fo:block xsl:use-attribute-sets="toc.margin.properties"> +              <xsl:call-template name="table.of.contents.titlepage"/> +              <xsl:apply-templates/> +            </fo:block> +          </fo:flow> +        </fo:page-sequence> +      </xsl:if> +    </xsl:when> +    <xsl:otherwise> +      <xsl:if test="$process.empty.source.toc != 0"> +        <fo:page-sequence hyphenate="{$hyphenate}" +                          master-reference="{$master-reference}"> +          <xsl:attribute name="language"> +            <xsl:call-template name="l10n.language"/> +          </xsl:attribute> +          <xsl:attribute name="format"> +            <xsl:call-template name="page.number.format"> +              <xsl:with-param name="element" select="'toc'"/> +              <xsl:with-param name="master-reference"  +                              select="$master-reference"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:attribute name="initial-page-number"> +            <xsl:call-template name="initial.page.number"> +              <xsl:with-param name="element" select="'toc'"/> +              <xsl:with-param name="master-reference"  +                              select="$master-reference"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:attribute name="hyphenation-character"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-character'"/> +            </xsl:call-template> +          </xsl:attribute> +          <xsl:attribute name="hyphenation-push-character-count"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +            </xsl:call-template> +          </xsl:attribute> +          <xsl:attribute name="hyphenation-remain-character-count"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:apply-templates select="." mode="running.head.mode"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:apply-templates> +          <xsl:apply-templates select="." mode="running.foot.mode"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:apply-templates> + +          <fo:flow flow-name="xsl-region-body"> +            <xsl: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> +          </fo:flow> +        </fo:page-sequence> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="tocpart|tocchap +                     |toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"> +  <xsl:apply-templates select="tocentry"/> +  <xsl:if test="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"> +    <fo:block start-indent="{count(ancestor::*)*2}pc"> +      <xsl:apply-templates select="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"/> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="tocentry|tocfront|tocback"> +  <fo:block text-align-last="justify" +            end-indent="2pc" +            last-line-end-indent="-2pc"> +    <fo:inline keep-with-next.within-line="always"> +      <xsl:choose> +        <xsl:when test="@linkend"> +          <fo:basic-link internal-destination="{@linkend}"> +            <xsl:apply-templates/> +          </fo:basic-link> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates/> +        </xsl:otherwise> +      </xsl:choose> +    </fo:inline> + +    <xsl:choose> +      <xsl:when test="@linkend"> +        <fo:inline keep-together.within-line="always"> +          <xsl:text> </xsl:text> +          <fo:leader leader-pattern="dots" +                     keep-with-next.within-line="always"/> +          <xsl:text> </xsl:text> +          <fo:basic-link internal-destination="{@linkend}"> +            <xsl:choose> +              <xsl:when test="@pagenum"> +                <xsl:value-of select="@pagenum"/> +              </xsl:when> +              <xsl:otherwise> +                <fo:page-number-citation ref-id="{@linkend}"/> +              </xsl:otherwise> +            </xsl:choose> +          </fo:basic-link> +        </fo:inline> +      </xsl:when> +      <xsl:when test="@pagenum"> +        <fo:inline keep-together.within-line="always"> +          <xsl:text> </xsl:text> +          <fo:leader leader-pattern="dots" +                     keep-with-next.within-line="always"/> +          <xsl:text> </xsl:text> +          <xsl:value-of select="@pagenum"/> +        </fo:inline> +      </xsl:when> +      <xsl:otherwise> +        <!-- just the leaders, what else can I do? --> +        <fo:inline keep-together.within-line="always"> +          <xsl:text> </xsl:text> +          <fo:leader leader-pattern="space" +                     keep-with-next.within-line="always"/> +        </fo:inline> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" 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/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/verbatim.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/verbatim.xsl.svn-base new file mode 100644 index 0000000..56b4240 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/verbatim.xsl.svn-base @@ -0,0 +1,417 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" +                xmlns:xverb="com.nwalsh.xalan.Verbatim" +                xmlns:lxslt="http://xml.apache.org/xslt" +                xmlns:exsl="http://exslt.org/common" +                exclude-result-prefixes="sverb xverb lxslt exsl" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This 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:variable name="content"> +    <xsl:choose> +      <xsl:when test="$suppress-numbers = '0' +                      and @linenumbering = 'numbered' +                      and $use.extensions != '0' +                      and $linenumbering.extension != '0'"> +        <xsl:call-template name="number.rtf.lines"> +          <xsl:with-param name="rtf"> +	    <xsl:call-template name="apply-highlighting"/> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +	<xsl:call-template name="apply-highlighting"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$shade.verbatim != 0"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="monospace.verbatim.properties shade.verbatim.style"> +        <xsl:choose> +          <xsl:when test="$hyphenate.verbatim != 0 and function-available('exsl:node-set')"> +            <xsl:apply-templates select="exsl:node-set($content)" mode="hyphenate.verbatim"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$content"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="monospace.verbatim.properties"> +        <xsl:choose> +          <xsl:when test="$hyphenate.verbatim != 0 and function-available('exsl:node-set')"> +            <xsl:apply-templates select="exsl:node-set($content)" mode="hyphenate.verbatim"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$content"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="literallayout"> +  <xsl:param name="suppress-numbers" select="'0'"/> + +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="content"> +    <xsl:choose> +      <xsl:when test="$suppress-numbers = '0' +                      and @linenumbering = 'numbered' +                      and $use.extensions != '0' +                      and $linenumbering.extension != '0'"> +        <xsl:call-template name="number.rtf.lines"> +          <xsl:with-param name="rtf"> +            <xsl:apply-templates/> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="@class='monospaced'"> +      <xsl:choose> +        <xsl:when test="$shade.verbatim != 0"> +          <fo:block id="{$id}" +                    xsl:use-attribute-sets="monospace.verbatim.properties shade.verbatim.style"> + +            <xsl:copy-of select="$content"/> +          </fo:block> +        </xsl:when> +        <xsl:otherwise> +          <fo:block id="{$id}" +                    xsl:use-attribute-sets="monospace.verbatim.properties"> +            <xsl:copy-of select="$content"/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$shade.verbatim != 0"> +          <fo:block id="{$id}" +                    xsl:use-attribute-sets="verbatim.properties shade.verbatim.style"> +            <xsl:copy-of select="$content"/> +          </fo:block> +        </xsl:when> +        <xsl:otherwise> +          <fo:block id="{$id}" +                    xsl:use-attribute-sets="verbatim.properties"> +            <xsl:copy-of select="$content"/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="address"> +  <xsl:param name="suppress-numbers" select="'0'"/> + +  <xsl:variable name="content"> +    <xsl:choose> +      <xsl:when test="$suppress-numbers = '0' +                      and @linenumbering = 'numbered' +                      and $use.extensions != '0' +                      and $linenumbering.extension != '0'"> +        <xsl:call-template name="number.rtf.lines"> +          <xsl:with-param name="rtf"> +            <xsl:apply-templates/> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:block xsl:use-attribute-sets="verbatim.properties"> +    <xsl:copy-of select="$content"/> +  </fo:block> +</xsl:template> + +<xsl:template name="number.rtf.lines"> +  <xsl:param name="rtf" select="''"/> +  <xsl:param name="pi.context" select="."/> + +  <!-- Save the global values --> +  <xsl:variable name="global.linenumbering.everyNth" +                select="$linenumbering.everyNth"/> + +  <xsl:variable name="global.linenumbering.separator" +                select="$linenumbering.separator"/> + +  <xsl:variable name="global.linenumbering.width" +                select="$linenumbering.width"/> + +  <!-- Extract the <?dbfo linenumbering.*?> PI values --> +  <xsl:variable name="pi.linenumbering.everyNth"> +    <xsl:call-template name="pi.dbfo_linenumbering.everyNth"> +      <xsl:with-param name="node" select="$pi.context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="pi.linenumbering.separator"> +    <xsl:call-template name="pi.dbfo_linenumbering.separator"> +      <xsl:with-param name="node" select="$pi.context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="pi.linenumbering.width"> +    <xsl:call-template name="pi.dbfo_linenumbering.width"> +      <xsl:with-param name="node" select="$pi.context"/> +    </xsl:call-template> +  </xsl:variable> + +  <!-- Construct the 'in-context' values --> +  <xsl:variable name="linenumbering.everyNth"> +    <xsl:choose> +      <xsl:when test="$pi.linenumbering.everyNth != ''"> +        <xsl:value-of select="$pi.linenumbering.everyNth"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$global.linenumbering.everyNth"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="linenumbering.separator"> +    <xsl:choose> +      <xsl:when test="$pi.linenumbering.separator != ''"> +        <xsl:value-of select="$pi.linenumbering.separator"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$global.linenumbering.separator"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="linenumbering.width"> +    <xsl:choose> +      <xsl:when test="$pi.linenumbering.width != ''"> +        <xsl:value-of select="$pi.linenumbering.width"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$global.linenumbering.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="linenumbering.startinglinenumber"> +    <xsl:choose> +      <xsl:when test="$pi.context/@startinglinenumber"> +        <xsl:value-of select="$pi.context/@startinglinenumber"/> +      </xsl:when> +      <xsl:when test="$pi.context/@continuation='continues'"> +        <xsl:variable name="lastLine"> +          <xsl:choose> +            <xsl:when test="$pi.context/self::programlisting"> +              <xsl:call-template name="lastLineNumber"> +                <xsl:with-param name="listings" +                     select="preceding::programlisting[@linenumbering='numbered']"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="$pi.context/self::screen"> +              <xsl:call-template name="lastLineNumber"> +                <xsl:with-param name="listings" +                     select="preceding::screen[@linenumbering='numbered']"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="$pi.context/self::literallayout"> +              <xsl:call-template name="lastLineNumber"> +                <xsl:with-param name="listings" +                     select="preceding::literallayout[@linenumbering='numbered']"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="$pi.context/self::address"> +              <xsl:call-template name="lastLineNumber"> +                <xsl:with-param name="listings" +                     select="preceding::address[@linenumbering='numbered']"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="$pi.context/self::synopsis"> +              <xsl:call-template name="lastLineNumber"> +                <xsl:with-param name="listings" +                     select="preceding::synopsis[@linenumbering='numbered']"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:otherwise> +              <xsl:message> +                <xsl:text>Unexpected verbatim environment: </xsl:text> +                <xsl:value-of select="local-name(.)"/> +              </xsl:message> +              <xsl:value-of select="0"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:variable> + +        <xsl:value-of select="$lastLine + 1"/> +      </xsl:when> +      <xsl:otherwise>1</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="function-available('sverb:numberLines')"> +      <xsl:copy-of select="sverb:numberLines($rtf)"/> +    </xsl:when> +    <xsl:when test="function-available('xverb:numberLines')"> +      <xsl:copy-of select="xverb:numberLines($rtf)"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message terminate="yes"> +        <xsl:text>No numberLines function available.</xsl:text> +      </xsl:message> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ======================================================================== --> + +<xsl:template name="lastLineNumber"> +  <xsl:param name="listings"/> +  <xsl:param name="number" select="0"/> + +  <xsl:variable name="lines"> +    <xsl:call-template name="countLines"> +      <xsl:with-param name="listing" select="string($listings[1])"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="not($listings)"> +      <xsl:value-of select="$number"/> +    </xsl:when> +    <xsl:when test="$listings[1]/@startinglinenumber"> +      <xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/> +    </xsl:when> +    <xsl:when test="$listings[1]/@continuation='continues'"> +      <xsl:call-template name="lastLineNumber"> +        <xsl:with-param name="listings" select="listings[position() > 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, '
')"> +      <xsl:call-template name="countLines"> +        <xsl:with-param name="listing" select="substring-after($listing, '
')"/> +        <xsl:with-param name="count" select="$count + 1"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$count"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ======================================================================== --> + +<xsl:template match="node()|@*" mode="hyphenate.verbatim"> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:apply-templates mode="hyphenate.verbatim"/> +  </xsl:copy> +</xsl:template> + +<xsl:template match="text()" mode="hyphenate.verbatim" priority="2"> +  <xsl:call-template name="hyphenate.verbatim.block"> +    <xsl:with-param name="content" select="."/> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="hyphenate.verbatim.block"> +  <xsl:param name="content" select="''"/> +  <xsl:param name="count" select="1"/> + +  <!-- recurse on lines first to keep recursion depth reasonable --> +  <xsl:choose> +    <xsl:when test="contains($content, '
')"> +      <xsl:variable name="line" select="substring-before($content, '
')"/> +      <xsl:variable name="rest" select="substring-after($content, '
')"/> +      <xsl:call-template name="hyphenate.verbatim"> +        <xsl:with-param name="content" select="concat($line, '
')"/> +      </xsl:call-template> +      <xsl:call-template name="hyphenate.verbatim.block"> +        <xsl:with-param name="content" select="$rest"/> +        <xsl:with-param name="count" select="$count + 1"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="hyphenate.verbatim"> +        <xsl:with-param name="content" select="$content"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +   +</xsl:template> + +<xsl:template name="hyphenate.verbatim"> +  <xsl:param name="content"/> +  <xsl:variable name="head" select="substring($content, 1, 1)"/> +  <xsl:variable name="tail" select="substring($content, 2)"/> +  <xsl:choose> +    <!-- Place soft-hyphen after space or non-breakable space. --> +    <xsl:when test="$head = ' ' or $head = ' '"> +      <xsl:text> </xsl:text> +      <xsl:text>­</xsl:text> +    </xsl:when> +    <xsl:when test="$hyphenate.verbatim.characters != '' and +                    translate($head, $hyphenate.verbatim.characters, '') = '' and not($tail = '')"> +      <xsl:value-of select="$head"/> +      <xsl:text>­</xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$head"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:if test="$tail"> +    <xsl:call-template name="hyphenate.verbatim"> +      <xsl:with-param name="content" select="$tail"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/xep.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/xep.xsl.svn-base new file mode 100644 index 0000000..437842e --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/xep.xsl.svn-base @@ -0,0 +1,180 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** +     (c) Stephane Bline Peregrine Systems 2001 +     Implementation of xep extensions: +       * Pdf bookmarks (based on the XEP 2.5 implementation) +       * Document information (XEP 2.5 meta information extensions) +     ******************************************************************** --> + +<!-- FIXME: Norm, I changed things so that the top-level element (book or set) +     does not appear in the TOC. Is this the right thing? --> + +<xsl:template name="xep-document-information"> +  <rx:meta-info> +    <xsl:variable name="authors"  +                  select="(//author|//editor|//corpauthor|//authorgroup)[1]"/> +    <xsl:if test="$authors"> +      <xsl:variable name="author"> +        <xsl:choose> +          <xsl:when test="$authors[self::authorgroup]"> +            <xsl:call-template name="person.name.list"> +              <xsl:with-param name="person.list"  +                        select="$authors/*[self::author|self::corpauthor| +                               self::othercredit|self::editor]"/> +            </xsl:call-template> +          </xsl:when> +          <xsl:when test="$authors[self::corpauthor]"> +            <xsl:value-of select="$authors"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="person.name"> +              <xsl:with-param name="node" select="$authors"/> +            </xsl:call-template> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> +      <xsl:element name="rx:meta-field"> +        <xsl:attribute name="name">author</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:value-of select="normalize-space($author)"/> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> + +    <xsl:variable name="title"> +      <xsl:apply-templates select="/*[1]" mode="label.markup"/> +      <xsl:apply-templates select="/*[1]" mode="title.markup"/> +    </xsl:variable> + +    <xsl:element name="rx:meta-field"> +      <xsl:attribute name="name">creator</xsl:attribute> +      <xsl:attribute name="value"> +        <xsl:text>DocBook </xsl:text> +        <xsl:value-of select="$DistroTitle"/> +        <xsl:text> V</xsl:text> +        <xsl:value-of select="$VERSION"/> +      </xsl:attribute> +    </xsl:element> + +    <xsl:element name="rx:meta-field"> +      <xsl:attribute name="name">title</xsl:attribute> +      <xsl:attribute name="value"> +        <xsl:value-of select="normalize-space($title)"/> +      </xsl:attribute> +    </xsl:element> + +    <xsl:if test="//keyword"> +      <xsl:element name="rx:meta-field"> +        <xsl:attribute name="name">keywords</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:for-each select="//keyword"> +            <xsl:value-of select="normalize-space(.)"/> +            <xsl:if test="position() != last()"> +              <xsl:text>, </xsl:text> +            </xsl:if> +          </xsl:for-each> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> + +    <xsl:if test="//subjectterm"> +      <xsl:element name="rx:meta-field"> +        <xsl:attribute name="name">subject</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:for-each select="//subjectterm"> +            <xsl:value-of select="normalize-space(.)"/> +            <xsl:if test="position() != last()"> +              <xsl:text>, </xsl:text> +            </xsl:if> +          </xsl:for-each> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> +  </rx:meta-info> +</xsl:template> + +<!-- ******************************************************************** +     Pdf bookmarks +     ******************************************************************** --> + +<xsl:template match="*" mode="xep.outline"> +  <xsl:apply-templates select="*" mode="xep.outline"/> +</xsl:template> + +<xsl:template match="set|book|part|reference|preface|chapter|appendix|article +                     |glossary|bibliography|index|setindex +                     |refentry|refsynopsisdiv +                     |refsect1|refsect2|refsect3|refsection +                     |sect1|sect2|sect3|sect4|sect5|section" +              mode="xep.outline"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="bookmark-label"> +    <xsl:apply-templates select="." mode="object.title.markup"/> +  </xsl:variable> + +  <!-- Put the root element bookmark at the same level as its children --> +  <!-- If the object is a set or book, generate a bookmark for the toc --> + +  <xsl:choose> +    <xsl:when test="parent::*"> +      <rx:bookmark internal-destination="{$id}"> +        <rx:bookmark-label> +          <xsl:value-of select="normalize-space($bookmark-label)"/> +        </rx:bookmark-label> +        <xsl:apply-templates select="*" mode="xep.outline"/> +      </rx:bookmark> +    </xsl:when> +    <xsl:otherwise> +      <xsl:if test="$bookmark-label != ''"> +        <rx:bookmark internal-destination="{$id}"> +          <rx:bookmark-label> +            <xsl:value-of select="normalize-space($bookmark-label)"/> +          </rx:bookmark-label> +        </rx:bookmark> +      </xsl:if> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:if test="contains($toc.params, 'toc') +                    and set|book|part|reference|section|sect1|refentry +                        |article|bibliography|glossary|chapter +                        |appendix"> +        <rx:bookmark internal-destination="toc...{$id}"> +          <rx:bookmark-label> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'TableofContents'"/> +            </xsl:call-template> +          </rx:bookmark-label> +        </rx:bookmark> +      </xsl:if> +      <xsl:apply-templates select="*" mode="xep.outline"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="xep-pis"> +  <xsl:if test="$crop.marks != 0"> +    <xsl:processing-instruction name="xep-pdf-crop-mark-width"><xsl:value-of select="$crop.mark.width"/></xsl:processing-instruction> +    <xsl:processing-instruction name="xep-pdf-crop-offset"><xsl:value-of select="$crop.mark.offset"/></xsl:processing-instruction> +    <xsl:processing-instruction name="xep-pdf-bleed"><xsl:value-of select="$crop.mark.bleed"/></xsl:processing-instruction> +  </xsl:if> + +  <xsl:call-template name="user-xep-pis"/> +</xsl:template> + +<!-- Placeholder for user defined PIs --> +<xsl:template name="user-xep-pis"/> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/xref.xsl.svn-base b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/xref.xsl.svn-base new file mode 100644 index 0000000..2b0d813 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/.svn/text-base/xref.xsl.svn-base @@ -0,0 +1,1440 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:exsl="http://exslt.org/common" +                xmlns:xlink='http://www.w3.org/1999/xlink' +                exclude-result-prefixes="exsl" +                version='1.0'> + +<!-- ******************************************************************** +     $Id$ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- Use internal variable for olink xlink role for consistency --> +<xsl:variable  +      name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable> + +<!-- ==================================================================== --> + +<xsl:template match="anchor"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:inline id="{$id}"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="xref" name="xref"> +  <xsl:param name="xhref" select="@xlink:href"/> +  <!-- is the @xlink:href a local idref link? --> +  <xsl:param name="xlink.idref"> +    <xsl:if test="starts-with($xhref,'#') +                  and (not(contains($xhref,'(')) +                  or starts-with($xhref, '#xpointer(id('))"> +      <xsl:call-template name="xpointer.idref"> +        <xsl:with-param name="xpointer" select="$xhref"/> +      </xsl:call-template> +   </xsl:if> +  </xsl:param> +  <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/> +  <xsl:param name="linkend.targets" select="key('id',@linkend)"/> +  <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/> +  <xsl:param name="refelem" select="local-name($target)"/> + +  <xsl:variable name="xrefstyle"> +    <xsl:choose> +      <xsl:when test="@role and not(@xrefstyle)  +                      and $use.role.as.xrefstyle != 0"> +        <xsl:value-of select="@role"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="@xrefstyle"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="content"> +    <fo:inline xsl:use-attribute-sets="xref.properties"> +      <xsl:choose> +        <xsl:when test="@endterm"> +          <xsl:variable name="etargets" select="key('id',@endterm)"/> +          <xsl:variable name="etarget" select="$etargets[1]"/> +          <xsl:choose> +            <xsl:when test="count($etarget) = 0"> +              <xsl:message> +                <xsl:value-of select="count($etargets)"/> +                <xsl:text>Endterm points to nonexistent ID: </xsl:text> +                <xsl:value-of select="@endterm"/> +              </xsl:message> +              <xsl:text>???</xsl:text> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="$etarget" mode="endterm"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +   +        <xsl:when test="$target/@xreflabel"> +          <xsl:call-template name="xref.xreflabel"> +            <xsl:with-param name="target" select="$target"/> +          </xsl:call-template> +        </xsl:when> +   +        <xsl:when test="$target"> +          <xsl:if test="not(parent::citation)"> +            <xsl:apply-templates select="$target" mode="xref-to-prefix"/> +          </xsl:if> +   +          <xsl:apply-templates select="$target" mode="xref-to"> +            <xsl:with-param name="referrer" select="."/> +            <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +          </xsl:apply-templates> +   +          <xsl:if test="not(parent::citation)"> +            <xsl:apply-templates select="$target" mode="xref-to-suffix"/> +          </xsl:if> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message> +            <xsl:text>ERROR: xref linking to </xsl:text> +            <xsl:value-of select="@linkend|@xlink:href"/> +            <xsl:text> has no generated link text.</xsl:text> +          </xsl:message> +          <xsl:text>???</xsl:text> +        </xsl:otherwise> +      </xsl:choose> +    </fo:inline> +  </xsl:variable> + +  <!-- Convert it into an active link --> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content" select="$content"/> +  </xsl:call-template> + +  <!-- Add standard page reference? --> +  <xsl:choose> +    <xsl:when test="not($target)"> +      <!-- page numbers only for local targets --> +    </xsl:when> +    <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')  +                  and contains($xrefstyle, 'nopage')"> +      <!-- negative xrefstyle in instance turns it off --> +    </xsl:when> +    <!-- positive xrefstyle already handles it --> +    <xsl:when test="not(starts-with(normalize-space($xrefstyle), 'select:')  +                  and (contains($xrefstyle, 'page') +                       or contains($xrefstyle, 'Page'))) +                  and ( $insert.xref.page.number = 'yes'  +                     or $insert.xref.page.number = '1') +                  or local-name($target) = 'para'"> +      <xsl:apply-templates select="$target" mode="page.citation"> +        <xsl:with-param name="id" select="$target/@id|$target/@xml:id"/> +      </xsl:apply-templates> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- Handled largely like an xref --> +<!-- To be done: add support for begin, end, and units attributes --> +<xsl:template match="biblioref" name="biblioref"> +  <xsl:variable name="targets" select="key('id',@linkend)"/> +  <xsl:variable name="target" select="$targets[1]"/> +  <xsl:variable name="refelem" select="local-name($target)"/> + +  <xsl:call-template name="check.id.unique"> +    <xsl:with-param name="linkend" select="@linkend"/> +  </xsl:call-template> + +  <xsl:choose> +    <xsl:when test="$refelem=''"> +      <xsl:message> +        <xsl:text>XRef to nonexistent id: </xsl:text> +        <xsl:value-of select="@linkend"/> +      </xsl:message> +      <xsl:text>???</xsl:text> +    </xsl:when> + +    <xsl:when test="@endterm"> +      <fo:basic-link internal-destination="{@linkend}" +                     xsl:use-attribute-sets="xref.properties"> +        <xsl:variable name="etargets" select="key('id',@endterm)"/> +        <xsl:variable name="etarget" select="$etargets[1]"/> +        <xsl:choose> +          <xsl:when test="count($etarget) = 0"> +            <xsl:message> +              <xsl:value-of select="count($etargets)"/> +              <xsl:text>Endterm points to nonexistent ID: </xsl:text> +              <xsl:value-of select="@endterm"/> +            </xsl:message> +            <xsl:text>???</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="$etarget" mode="endterm"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:basic-link> +    </xsl:when> + +    <xsl:when test="$target/@xreflabel"> +      <fo:basic-link internal-destination="{@linkend}" +                     xsl:use-attribute-sets="xref.properties"> +        <xsl:call-template name="xref.xreflabel"> +          <xsl:with-param name="target" select="$target"/> +        </xsl:call-template> +      </fo:basic-link> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:if test="not(parent::citation)"> +        <xsl:apply-templates select="$target" mode="xref-to-prefix"/> +      </xsl:if> + +      <fo:basic-link internal-destination="{@linkend}" +                     xsl:use-attribute-sets="xref.properties"> +        <xsl:apply-templates select="$target" mode="xref-to"> +          <xsl:with-param name="referrer" select="."/> +          <xsl:with-param name="xrefstyle"> +            <xsl:choose> +              <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0"> +                <xsl:value-of select="@role"/> +              </xsl:when> +              <xsl:otherwise> +                <xsl:value-of select="@xrefstyle"/> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:with-param> +        </xsl:apply-templates> +      </fo:basic-link> + +      <xsl:if test="not(parent::citation)"> +        <xsl:apply-templates select="$target" mode="xref-to-suffix"/> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="endterm"> +  <!-- Process the children of the endterm element --> +  <xsl:variable name="endterm"> +    <xsl:apply-templates select="child::node()"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="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:copy> +    <xsl:for-each select="@*"> +      <xsl:choose> +        <xsl:when test="name(.) != 'id'"> +          <xsl:copy/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message>removing <xsl:value-of select="name(.)"/></xsl:message> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:for-each> +    <xsl:apply-templates mode="remove-ids"/> +  </xsl:copy> +</xsl:template> + +<!--- ==================================================================== --> + +<xsl:template match="*" mode="xref-to-prefix"/> +<xsl:template match="*" mode="xref-to-suffix"/> + +<xsl:template match="*" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + + +  <xsl:if test="$verbose != 0"> +    <xsl:message> +      <xsl:text>Don't know what gentext to create for xref to: "</xsl:text> +      <xsl:value-of select="name(.)"/> +      <xsl:text>"</xsl:text> +    </xsl:message> +    <xsl:text>???</xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="title" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <!-- if you xref to a title, xref to the parent... --> +  <xsl:choose> +    <!-- FIXME: how reliable is this? --> +    <xsl:when test="contains(local-name(parent::*), 'info')"> +      <xsl:apply-templates select="parent::*[2]" mode="xref-to"> +        <xsl:with-param name="referrer" select="$referrer"/> +        <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +        <xsl:with-param name="verbose" select="$verbose"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="parent::*" mode="xref-to"> +        <xsl:with-param name="referrer" select="$referrer"/> +        <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +        <xsl:with-param name="verbose" select="$verbose"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="abstract|article|authorblurb|bibliodiv|bibliomset +                     |biblioset|blockquote|calloutlist|caution|colophon +                     |constraintdef|formalpara|glossdiv|important|indexdiv +                     |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain +                     |msgrel|msgset|msgsub|note|orderedlist|partintro +                     |productionset|qandadiv|refsynopsisdiv|segmentedlist +                     |set|setindex|sidebar|tip|toc|variablelist|warning" +              mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <!-- catch-all for things with (possibly optional) titles --> +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="author|editor|othercredit|personname" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:call-template name="person.name"/> +</xsl:template> + +<xsl:template match="authorgroup" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:call-template name="person.name.list"/> +</xsl:template> + +<xsl:template match="figure|example|table|equation" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="procedure" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="task" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="cmdsynopsis" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="(.//command)[1]" mode="xref"/> +</xsl:template> + +<xsl:template match="funcsynopsis" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="(.//function)[1]" mode="xref"/> +</xsl:template> + +<xsl:template match="dedication|preface|chapter|appendix" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="bibliography" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to-prefix"> +  <xsl:text>[</xsl:text> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to-suffix"> +  <xsl:text>]</xsl:text> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <!-- handles both biblioentry and bibliomixed --> +  <xsl:choose> +    <xsl:when test="string(.) = ''"> +      <xsl:variable name="bib" select="document($bibliography.collection,.)"/> +      <xsl:variable name="id" select="(@id|@xml:id)[1]"/> +      <xsl:variable name="entry" select="$bib/bibliography/ +                                         *[@id=$id or @xml:id=$id][1]"/> +      <xsl:choose> +        <xsl:when test="$entry"> +          <xsl:choose> +            <xsl:when test="$bibliography.numbered != 0"> +              <xsl:number from="bibliography" count="biblioentry|bibliomixed" +                          level="any" format="1"/> +            </xsl:when> +            <xsl:when test="local-name($entry/*[1]) = 'abbrev'"> +              <xsl:apply-templates select="$entry/*[1]"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:value-of select="(@id|@xml:id)[1]"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message> +            <xsl:text>No bibliography entry: </xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text> found in </xsl:text> +            <xsl:value-of select="$bibliography.collection"/> +          </xsl:message> +          <xsl:value-of select="(@id|@xml:id)[1]"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$bibliography.numbered != 0"> +          <xsl:number from="bibliography" count="biblioentry|bibliomixed" +                      level="any" format="1"/> +        </xsl:when> +        <xsl:when test="local-name(*[1]) = 'abbrev'"> +          <xsl:apply-templates select="*[1]"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:value-of select="(@id|@xml:id)[1]"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="glossary" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="glossentry" mode="xref-to"> +  <xsl:choose> +    <xsl:when test="$glossentry.show.acronym = 'primary'"> +      <xsl:choose> +        <xsl:when test="acronym|abbrev"> +          <xsl:apply-templates select="(acronym|abbrev)[1]"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="glossterm[1]" mode="xref-to"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="glossterm[1]" mode="xref-to"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="glossterm" mode="xref-to"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="index" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="listitem" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="section|simplesect +                     |sect1|sect2|sect3|sect4|sect5 +                     |refsect1|refsect2|refsect3|refsection" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +  <!-- What about "in Chapter X"? --> +</xsl:template> + +<xsl:template match="bridgehead" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +  <!-- What about "in Chapter X"? --> +</xsl:template> + +<xsl:template match="qandaset" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="qandadiv" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="qandaentry" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="question[1]" mode="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:param name="verbose" select="1"/> + +  <xsl:choose> +    <xsl:when test="refmeta/refentrytitle"> +      <xsl:apply-templates select="refmeta/refentrytitle"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="refnamediv/refname[1]"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates select="refmeta/manvolnum"/> +</xsl:template> + +<xsl:template match="refnamediv" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="refname[1]" mode="xref-to"> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="refname" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates mode="xref-to"> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="step" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:call-template name="gentext"> +    <xsl:with-param name="key" select="'Step'"/> +  </xsl:call-template> +  <xsl:text> </xsl:text> +  <xsl:apply-templates select="." mode="number"/> +</xsl:template> + +<xsl:template match="varlistentry" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="term[1]" mode="xref-to"> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="varlistentry/term" mode="xref-to"> +  <xsl:param name="verbose" select="1"/> +  <!-- to avoid the comma that will be generated if there are several terms --> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="co" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="callout-bug"/> +</xsl:template> + +<xsl:template match="area|areaset" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> + +  <xsl:call-template name="callout-bug"> +    <xsl:with-param name="conum"> +      <xsl:apply-templates select="." mode="conumber"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="book" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="para" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose"/> + +  <xsl:variable name="context" select="(ancestor::simplesect +                                       |ancestor::section +                                       |ancestor::sect1 +                                       |ancestor::sect2 +                                       |ancestor::sect3 +                                       |ancestor::sect4 +                                       |ancestor::sect5 +                                       |ancestor::refsection +                                       |ancestor::refsect1 +                                       |ancestor::refsect2 +                                       |ancestor::refsect3 +                                       |ancestor::chapter +                                       |ancestor::appendix +                                       |ancestor::preface +                                       |ancestor::partintro +                                       |ancestor::dedication +                                       |ancestor::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="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="link" name="link"> +  <xsl:param name="linkend" select="@linkend"/> +  <xsl:param name="targets" select="key('id',$linkend)"/> +  <xsl:param name="target" select="$targets[1]"/> + +  <xsl:variable name="xrefstyle"> +    <xsl:choose> +      <xsl:when test="@role and not(@xrefstyle)  +                      and $use.role.as.xrefstyle != 0"> +        <xsl:value-of select="@role"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="@xrefstyle"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="content"> +    <fo:inline xsl:use-attribute-sets="xref.properties"> +      <xsl:choose> +        <xsl:when test="count(child::node()) > 0"> +          <!-- If it has content, use it --> +          <xsl:apply-templates/> +        </xsl:when> +        <!-- look for an endterm --> +        <xsl:when test="@endterm"> +          <xsl:variable name="etargets" select="key('id',@endterm)"/> +          <xsl:variable name="etarget" select="$etargets[1]"/> +          <xsl:choose> +            <xsl:when test="count($etarget) = 0"> +              <xsl:message> +                <xsl:value-of select="count($etargets)"/> +                <xsl:text>Endterm points to nonexistent ID: </xsl:text> +                <xsl:value-of select="@endterm"/> +              </xsl:message> +              <xsl:text>???</xsl:text> +            </xsl:when> +            <xsl:otherwise> +                <xsl:apply-templates select="$etarget" mode="endterm"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <!-- Use the xlink:href if no other text --> +        <xsl:when test="@xlink:href"> +          <xsl: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="$target"/> +          </xsl:message> +          <xsl:text>???</xsl:text> +        </xsl:otherwise> +      </xsl:choose> +    </fo:inline> +  </xsl:variable> + +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="node" select="."/> +    <xsl:with-param name="linkend" select="$linkend"/> +    <xsl:with-param name="content" select="$content"/> +  </xsl:call-template> + +  <!-- Add standard page reference? --> +  <xsl:choose> +    <!-- page numbering on link only enabled for @linkend --> +    <!-- There is no link element in DB5 with xlink:href --> +    <xsl:when test="not($linkend)"> +    </xsl:when> +    <!-- negative xrefstyle in instance turns it off --> +    <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')  +                  and contains($xrefstyle, 'nopage')"> +    </xsl:when> +    <xsl:when test="(starts-with(normalize-space($xrefstyle), 'select:')  +                  and $insert.link.page.number = 'maybe'   +                  and (contains($xrefstyle, 'page') +                       or contains($xrefstyle, 'Page'))) +                  or ( $insert.link.page.number = 'yes'  +                     or $insert.link.page.number = '1') +                  or local-name($target) = 'para'"> +      <xsl:apply-templates select="$target" mode="page.citation"> +        <xsl:with-param name="id" select="$linkend"/> +      </xsl:apply-templates> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="ulink" name="ulink"> +  <xsl:param name="url" select="@url"/> + +  <xsl:variable name ="ulink.url"> +    <xsl:call-template name="fo-external-image"> +      <xsl:with-param name="filename" select="$url"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:basic-link xsl:use-attribute-sets="xref.properties" +                 external-destination="{$ulink.url}"> +    <xsl:choose> +      <xsl:when test="count(child::node())=0"> +        <xsl:call-template name="hyphenate-url"> +          <xsl:with-param name="url" select="$url"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates/> +      </xsl:otherwise> +    </xsl:choose> +  </fo:basic-link> + +  <xsl:if test="count(child::node()) != 0 +                and string(.) != $url +                and $ulink.show != 0"> +    <!-- yes, show the URI --> +    <xsl:choose> +      <xsl:when test="$ulink.footnotes != 0 and not(ancestor::footnote)"> +        <fo:footnote> +          <xsl:call-template name="ulink.footnote.number"/> +          <fo:footnote-body xsl:use-attribute-sets="footnote.properties"> +            <fo:block> +              <xsl:call-template name="ulink.footnote.number"/> +              <xsl:text> </xsl:text> +              <fo:basic-link external-destination="{$ulink.url}"> +                <xsl:value-of select="$url"/> +              </fo:basic-link> +            </fo:block> +          </fo:footnote-body> +        </fo:footnote> +      </xsl:when> +      <xsl:otherwise> +        <fo:inline hyphenate="false"> +          <xsl:text> [</xsl:text> +          <fo:basic-link external-destination="{$ulink.url}"> +            <xsl:call-template name="hyphenate-url"> +              <xsl:with-param name="url" select="$url"/> +            </xsl:call-template> +          </fo:basic-link> +          <xsl:text>]</xsl:text> +        </fo:inline> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:if> + +</xsl:template> + +<xsl:template name="ulink.footnote.number"> +  <fo:inline xsl:use-attribute-sets="footnote.mark.properties"> +    <xsl:choose> +      <xsl:when test="$fop.extensions != 0"> +        <xsl:attribute name="vertical-align">super</xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="baseline-shift">super</xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:variable name="fnum"> +      <!-- FIXME: list in @from is probably not complete --> +      <xsl:number level="any"  +                  from="chapter|appendix|preface|article|refentry|bibliography[not(parent::article)]"  +                  count="footnote[not(@label)][not(ancestor::tgroup)]|ulink[node()][@url != .][not(ancestor::footnote)]"  +                  format="1"/> +    </xsl:variable> +    <xsl:choose> +      <xsl:when test="string-length($footnote.number.symbols) >= $fnum"> +        <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:number value="$fnum" format="{$footnote.number.format}"/> +      </xsl:otherwise> +    </xsl:choose> +  </fo:inline> +</xsl:template> + +<xsl:template name="hyphenate-url"> +  <xsl:param name="url" select="''"/> +  <xsl:choose> +    <xsl:when test="$ulink.hyphenate = ''"> +      <xsl:value-of select="$url"/> +    </xsl:when> +    <xsl:when test="string-length($url) > 1"> +      <xsl:variable name="char" select="substring($url, 1, 1)"/> +      <xsl:value-of select="$char"/> +      <xsl:if test="contains($ulink.hyphenate.chars, $char)"> +        <!-- Do not hyphen in-between // --> +        <xsl:if test="not($char = '/' and substring($url,2,1) = '/')"> +          <xsl:copy-of select="$ulink.hyphenate"/> +        </xsl:if> +      </xsl:if> +      <!-- recurse to the next character --> +      <xsl:call-template name="hyphenate-url"> +        <xsl:with-param name="url" select="substring($url, 2)"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$url"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="olink" name="olink"> +  <!-- olink content may be passed in from xlink olink --> +  <xsl:param name="content" select="NOTANELEMENT"/> + +  <xsl: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 is '</xsl:text> +          <xsl:value-of select="local-name($target.database/*[1])"/> +          <xsl:text>'.</xsl:text> +        </xsl:message> +      </xsl:if> +     +      <xsl:variable name="olink.key"> +        <xsl:call-template name="select.olink.key"> +          <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> +          <xsl:with-param name="targetptr.att" select="$targetptr.att"/> +          <xsl:with-param name="olink.lang" select="$olink.lang"/> +          <xsl:with-param name="target.database" select="$target.database"/> +        </xsl:call-template> +      </xsl:variable> +     +      <xsl:if test="string-length($olink.key) = 0"> +        <xsl:message> +          <xsl:text>Error: unresolved olink: </xsl:text> +          <xsl:text>targetdoc/targetptr = '</xsl:text> +          <xsl:value-of select="$targetdoc.att"/> +          <xsl:text>/</xsl:text> +          <xsl:value-of select="$targetptr.att"/> +          <xsl:text>'.</xsl:text> +        </xsl:message> +      </xsl:if> + +      <xsl:variable name="href"> +        <xsl:call-template name="make.olink.href"> +          <xsl:with-param name="olink.key" select="$olink.key"/> +          <xsl:with-param name="target.database" select="$target.database"/> +        </xsl:call-template> +      </xsl:variable> + +      <!-- Olink that points to internal id can be a link --> +      <xsl:variable name="linkend"> +        <xsl:call-template name="olink.as.linkend"> +          <xsl:with-param name="olink.key" select="$olink.key"/> +          <xsl:with-param name="olink.lang" select="$olink.lang"/> +          <xsl:with-param name="target.database" select="$target.database"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="hottext"> +        <xsl:choose> +          <xsl:when test="$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:with-param name="linkend" select="$linkend"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$linkend != ''"> +          <fo:basic-link internal-destination="{$linkend}" +                       xsl:use-attribute-sets="xref.properties"> +            <xsl:copy-of select="$hottext"/> +            <xsl:copy-of select="$olink.page.citation"/> +          </fo:basic-link> +        </xsl:when> +        <xsl:when test="$href != ''"> +          <xsl:choose> +            <xsl:when test="$xep.extensions != 0"> +              <fo:basic-link external-destination="url({$href})" +                             xsl:use-attribute-sets="olink.properties"> +                <xsl:copy-of select="$hottext"/> +              </fo:basic-link> +              <xsl:copy-of select="$olink.page.citation"/> +              <xsl:copy-of select="$olink.docname.citation"/> +            </xsl:when> +            <xsl:when test="$axf.extensions != 0"> +              <fo:basic-link external-destination="{$href}" +                             xsl:use-attribute-sets="olink.properties"> +                <xsl:copy-of select="$hottext"/> +              </fo:basic-link> +              <xsl:copy-of select="$olink.page.citation"/> +              <xsl:copy-of select="$olink.docname.citation"/> +            </xsl:when> +            <xsl:otherwise> +              <fo:basic-link external-destination="{$href}" +                             xsl:use-attribute-sets="olink.properties"> +                <xsl:copy-of select="$hottext"/> +              </fo:basic-link> +              <xsl:copy-of select="$olink.page.citation"/> +              <xsl:copy-of select="$olink.docname.citation"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +          <xsl:copy-of select="$hottext"/> +          <xsl:copy-of select="$olink.page.citation"/> +          <xsl:copy-of select="$olink.docname.citation"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <!-- olink never implemented in FO for old olink entity syntax --> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="insert.olink.docname.markup"> +  <xsl:param name="docname" select="''"/> +   +  <fo:inline font-style="italic"> +    <xsl:value-of select="$docname"/> +  </fo:inline> + +</xsl:template> + +<!-- This prevents error message when processing olinks with xrefstyle --> +<xsl:template match="olink" mode="object.xref.template"/> + + +<xsl:template name="olink.as.linkend"> +  <xsl:param name="olink.key" select="''"/> +  <xsl:param name="olink.lang" select="''"/> +  <xsl:param name="target.database" select="NotANode"/> + +  <xsl:variable name="targetdoc"> +    <xsl:value-of select="substring-before($olink.key, '/')"/> +  </xsl:variable> + +  <xsl:variable name="targetptr"> +    <xsl:value-of  +       select="substring-before(substring-after($olink.key, '/'), '/')"/> +  </xsl:variable> + +  <xsl:variable name="target.lang"> +    <xsl:variable name="candidate"> +      <xsl:for-each select="$target.database" > +        <xsl:value-of  +                  select="key('targetptr-key', $olink.key)/@lang" /> +      </xsl:for-each> +    </xsl:variable> +    <xsl:choose> +      <xsl:when test="$candidate != ''"> +        <xsl:value-of select="$candidate"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$olink.lang"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="$current.docid = $targetdoc and  +                $olink.lang = $target.lang"> +    <xsl:variable name="targets" select="key('id',$targetptr)"/> +    <xsl:variable name="target" select="$targets[1]"/> +    <xsl:if test="$target"> +      <xsl:value-of select="$targetptr"/> +    </xsl:if> +  </xsl:if> + +</xsl:template> + + +<xsl:template name="olink.outline"> +  <xsl:param name="outline.base.uri"/> +  <xsl:param name="localinfo"/> +  <xsl:param name="return" select="href"/> + +  <xsl:message terminate="yes">Fatal error: olink.outline template: what is this supposed to do?</xsl:message> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="title.xref"> +  <xsl:param name="target" select="."/> +  <xsl:choose> +    <xsl:when test="local-name($target) = 'figure' +                    or local-name($target) = 'example' +                    or local-name($target) = 'equation' +                    or local-name($target) = 'table' +                    or local-name($target) = 'dedication' +                    or local-name($target) = 'preface' +                    or local-name($target) = 'bibliography' +                    or local-name($target) = 'glossary' +                    or local-name($target) = 'index' +                    or local-name($target) = 'setindex' +                    or local-name($target) = 'colophon'"> +      <xsl:call-template name="gentext.startquote"/> +      <xsl:apply-templates select="$target" mode="title.markup"/> +      <xsl:call-template name="gentext.endquote"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline font-style="italic"> +        <xsl:apply-templates select="$target" mode="title.markup"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="number.xref"> +  <xsl:param name="target" select="."/> +  <xsl:apply-templates select="$target" mode="label.markup"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="xref.xreflabel"> +  <!-- called to process an xreflabel...you might use this to make  --> +  <!-- xreflabels come out in the right font for different targets, --> +  <!-- for example. --> +  <xsl:param name="target" select="."/> +  <xsl:value-of select="$target/@xreflabel"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="title" mode="xref"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="command" mode="xref"> +  <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="function" mode="xref"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="*" mode="page.citation"> +  <xsl:param name="id" select="'???'"/> + +  <fo:basic-link internal-destination="{$id}" +                 xsl:use-attribute-sets="xref.properties"> +    <fo:inline keep-together.within-line="always"> +      <xsl:call-template name="substitute-markup"> +        <xsl:with-param name="template"> +          <xsl:call-template name="gentext.template"> +            <xsl:with-param name="name" select="'page.citation'"/> +            <xsl:with-param name="context" select="'xref'"/> +          </xsl:call-template> +        </xsl:with-param> +      </xsl:call-template> +    </fo:inline> +  </fo:basic-link> +</xsl:template> + +<xsl:template match="*" mode="pagenumber.markup"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:page-number-citation ref-id="{$id}"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="insert.title.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="title"/> + +  <xsl:choose> +    <!-- FIXME: what about the case where titleabbrev is inside the info? --> +    <xsl:when test="$purpose = 'xref' and titleabbrev"> +      <xsl:apply-templates select="." mode="titleabbrev.markup"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$title"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="chapter|appendix" mode="insert.title.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="title"/> + +  <xsl:choose> +    <xsl:when test="$purpose = 'xref'"> +      <fo:inline font-style="italic"> +        <xsl:copy-of select="$title"/> +      </fo:inline> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$title"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="insert.subtitle.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="subtitle"/> + +  <xsl:copy-of select="$subtitle"/> +</xsl:template> + +<xsl:template match="*" mode="insert.label.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="label"/> + +  <xsl:copy-of select="$label"/> +</xsl:template> + +<xsl:template match="*" mode="insert.pagenumber.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="pagenumber"/> + +  <xsl:copy-of select="$pagenumber"/> +</xsl:template> + +<xsl:template match="*" mode="insert.direction.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="direction"/> + +  <xsl:copy-of select="$direction"/> +</xsl:template> + +<xsl:template match="olink" mode="pagenumber.markup"> +  <!-- Local olinks can use page-citation --> +  <xsl:variable name="targetdoc.att" select="@targetdoc"/> +  <xsl:variable name="targetptr.att" select="@targetptr"/> + +  <xsl:variable name="olink.lang"> +    <xsl:call-template name="l10n.language"> +      <xsl:with-param name="xref-context" select="true()"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="target.database.filename"> +    <xsl:call-template name="select.target.database"> +      <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> +      <xsl:with-param name="targetptr.att" select="$targetptr.att"/> +      <xsl:with-param name="olink.lang" select="$olink.lang"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="target.database"  +      select="document($target.database.filename, /)"/> + +  <xsl:if test="$olink.debug != 0"> +    <xsl:message> +      <xsl:text>Olink debug: root element of target.database is '</xsl:text> +      <xsl:value-of select="local-name($target.database/*[1])"/> +      <xsl:text>'.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:variable name="olink.key"> +    <xsl:call-template name="select.olink.key"> +      <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> +      <xsl:with-param name="targetptr.att" select="$targetptr.att"/> +      <xsl:with-param name="olink.lang" select="$olink.lang"/> +      <xsl:with-param name="target.database" select="$target.database"/> +    </xsl:call-template> +  </xsl:variable> + +  <!-- Olink that points to internal id can be a link --> +  <xsl:variable name="linkend"> +    <xsl:call-template name="olink.as.linkend"> +      <xsl:with-param name="olink.key" select="$olink.key"/> +      <xsl:with-param name="olink.lang" select="$olink.lang"/> +      <xsl:with-param name="target.database" select="$target.database"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$linkend != ''"> +      <fo:page-number-citation ref-id="{$linkend}"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message> +        <xsl:text>Olink error: no page number linkend for local olink '</xsl:text> +        <xsl:value-of select="$olink.key"/> +        <xsl:text>'</xsl:text> +      </xsl:message> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/admon.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/admon.xsl new file mode 100644 index 0000000..6b5fb7e --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/admon.xsl @@ -0,0 +1,130 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: admon.xsl 8369 2007-09-09 08:55:14Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:template match="note|important|warning|caution|tip"> +  <xsl:choose> +    <xsl:when test="$admon.graphics != 0"> +      <xsl:call-template name="graphical.admonition"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="nongraphical.admonition"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="admon.graphic.width"> +  <xsl:param name="node" select="."/> +  <xsl:text>36pt</xsl:text> +</xsl:template> + +<xsl:template name="admon.graphic"> +  <xsl:param name="node" select="."/> + +  <xsl:variable name="filename"> +    <xsl:value-of select="$admon.graphics.path"/> +    <xsl:choose> +      <xsl:when test="local-name($node)='note'">note</xsl:when> +      <xsl:when test="local-name($node)='warning'">warning</xsl:when> +      <xsl:when test="local-name($node)='caution'">caution</xsl:when> +      <xsl:when test="local-name($node)='tip'">tip</xsl:when> +      <xsl:when test="local-name($node)='important'">important</xsl:when> +      <xsl:otherwise>note</xsl:otherwise> +    </xsl:choose> +    <xsl:value-of select="$admon.graphics.extension"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0 +                    or $fop.extensions != 0 +                    or $arbortext.extensions != 0"> +      <xsl:value-of select="$filename"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>url(</xsl:text> +      <xsl:value-of select="$filename"/> +      <xsl:text>)</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="graphical.admonition"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="graphic.width"> +     <xsl:apply-templates select="." mode="admon.graphic.width"/> +  </xsl:variable> + +  <fo:block id="{$id}" +            xsl:use-attribute-sets="graphical.admonition.properties"> +    <fo:list-block provisional-distance-between-starts="{$graphic.width} + 18pt" +                    provisional-label-separation="18pt"> +      <fo:list-item> +          <fo:list-item-label end-indent="label-end()"> +            <fo:block> +              <fo:external-graphic width="auto" height="auto" +                                         content-width="{$graphic.width}" > +                <xsl:attribute name="src"> +                  <xsl:call-template name="admon.graphic"/> +                </xsl:attribute> +              </fo:external-graphic> +            </fo:block> +          </fo:list-item-label> +          <fo:list-item-body start-indent="body-start()"> +            <xsl:if test="$admon.textlabel != 0 or title or info/title"> +              <fo:block xsl:use-attribute-sets="admonition.title.properties"> +                <xsl:apply-templates select="." mode="object.title.markup"> +		  <xsl:with-param name="allow-anchors" select="1"/> +		</xsl:apply-templates> +              </fo:block> +            </xsl:if> +            <fo:block xsl:use-attribute-sets="admonition.properties"> +              <xsl:apply-templates/> +            </fo:block> +          </fo:list-item-body> +      </fo:list-item> +    </fo:list-block> +  </fo:block> +</xsl:template> + +<xsl:template name="nongraphical.admonition"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}" +            xsl:use-attribute-sets="nongraphical.admonition.properties"> +    <xsl:if test="$admon.textlabel != 0 or title or info/title"> +      <fo:block keep-with-next.within-column='always' +                xsl:use-attribute-sets="admonition.title.properties"> +         <xsl:apply-templates select="." mode="object.title.markup"> +	   <xsl:with-param name="allow-anchors" select="1"/> +	 </xsl:apply-templates> +      </fo:block> +    </xsl:if> + +    <fo:block xsl:use-attribute-sets="admonition.properties"> +      <xsl:apply-templates/> +    </fo:block> +  </fo:block> +</xsl:template> + +<xsl:template match="note/title"></xsl:template> +<xsl:template match="important/title"></xsl:template> +<xsl:template match="warning/title"></xsl:template> +<xsl:template match="caution/title"></xsl:template> +<xsl:template match="tip/title"></xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/annotations.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/annotations.xsl new file mode 100644 index 0000000..9ce0d3d --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/annotations.xsl @@ -0,0 +1,18 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: annotations.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:template match="annotation"/> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx-kimber.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx-kimber.xsl new file mode 100644 index 0000000..40d4126 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx-kimber.xsl @@ -0,0 +1,178 @@ +<?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 sep '" "'> +<!-- 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:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService" +                exclude-result-prefixes="k" +                version="1.0"> + +<!-- ******************************************************************** +     $Id: autoidx-kimber.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen.  --> +<!-- ==================================================================== --> +<!--   *** THIS MODULE ONLY WORKS WITH SAXON 6 OR SAXON 8 ***             --> +<!-- ==================================================================== --> + +<xsl:include href="../common/autoidx-kimber.xsl"/> + +<!-- Java sort apparently works only on lang part, not country --> +<xsl:param name="sort.lang"> +  <xsl:choose> +    <xsl:when test="contains(⟨, '-')"> +      <xsl:value-of select="substring-before(⟨, '-')"/> +    </xsl:when> +    <xsl:when test="contains(⟨, '_')"> +      <xsl:value-of select="substring-before(⟨, '_')"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="⟨"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:template name="generate-kimber-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="not(contains($vendor, 'SAXON '))"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> +      <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="not(function-available('k:getIndexGroupKey'))"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> +      <xsl:text>Innodata Isogen 
Java extensions for </xsl:text> +      <xsl:text>internationalized indexes. 
Install those </xsl:text> +      <xsl:text>extensions, or use a different index method.
</xsl:text> +      <xsl:text>For more information, see:
</xsl:text> +      <xsl:text>http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:variable name="role"> +    <xsl:if test="$index.on.role != 0"> +      <xsl:value-of select="@role"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:if test="$index.on.type != 0"> +      <xsl:value-of select="@type"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="terms" +                select="//indexterm[count(.|key('k-group', +                   k:getIndexGroupKey(⟨, &primary;)) +                   [&scope;][1]) = 1 +                   and not(@class = 'endofrange')]"/> + +  <xsl:variable name="alphabetical" +                select="$terms[not(starts-with( +                k:getIndexGroupKey(⟨, &primary;), +                '#NUMERIC' +                ))]"/> + +  <xsl:variable name="others" +                select="$terms[starts-with( +                k:getIndexGroupKey(⟨, &primary;), +                '#NUMERIC' +                )]"/> + +  <fo:block> +    <xsl:if test="$others"> +      <xsl:call-template name="indexdiv.title"> +        <xsl:with-param name="titlecontent"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'index symbols'"/> +          </xsl:call-template> +        </xsl:with-param> +      </xsl:call-template> + +      <fo:block> +        <xsl:apply-templates select="$others" +                             mode="index-symbol-div"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort lang="{$sort.lang}" +              select="k:getIndexGroupSortKey(⟨, +                      k:getIndexGroupKey(⟨, &primary;))"/> +        </xsl:apply-templates> +      </fo:block> +    </xsl:if> + +    <xsl:apply-templates select="$alphabetical" +                         mode="index-div-kimber"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort lang="{$sort.lang}" +             select="k:getIndexGroupSortKey(⟨, +                     k:getIndexGroupKey(⟨, &primary;))"/> +    </xsl:apply-templates> +  </fo:block> + +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-kimber"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" +          select="k:getIndexGroupKey(⟨, &primary;)"/> + +  <xsl:variable name="label" +          select="k:getIndexGroupLabel(⟨, $key)"/> + +  <xsl:if test="key('k-group', $key)[&scope;] +                [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> +    <fo:block> +      <xsl:call-template name="indexdiv.title"> +        <xsl:with-param name="titlecontent"> +          <xsl:value-of select="$label"/> +        </xsl:with-param> +      </xsl:call-template> +      <fo:block> +        <xsl:apply-templates select="key('k-group', $key)[&scope;] +                            [count(.|key('primary', &primary;)[&scope;] +                            [1])=1]" +                             mode="index-primary"> +          <xsl:sort select="&primary;" lang="{$sort.lang}"/> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +        </xsl:apply-templates> +      </fo:block> +    </fo:block> +  </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx-kosek.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx-kosek.xsl new file mode 100644 index 0000000..ad80608 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx-kosek.xsl @@ -0,0 +1,150 @@ +<?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 sep '" "'> +<!-- Documents using the kimber index method must have a lang attribute --> +<!-- Only one of these should be present in the entity --> + +<!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:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                xmlns:i="urn:cz-kosek:functions:index" +                xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" +                xmlns:func="http://exslt.org/functions" +                xmlns:exslt="http://exslt.org/common" +                extension-element-prefixes="func exslt" +                exclude-result-prefixes="func exslt i l" +                version="1.0"> + +<!-- ******************************************************************** +     $Id: autoidx-kosek.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "kosek" method contributed by Jirka Kosek. --> + +<xsl:include href="../common/autoidx-kosek.xsl"/> + +<xsl:template name="generate-kosek-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="contains($vendor, 'libxslt')"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kosek' index method does not </xsl:text> +      <xsl:text>work with the xsltproc XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="contains($vendor, 'Saxonica')"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kosek' index method does not </xsl:text> +      <xsl:text>work with the Saxon 8 XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + + +  <xsl:if test="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
</xsl:text> +      <xsl:text>index extension functions be imported:
</xsl:text> +      <xsl:text>  xsl:import href="common/autoidx-kosek.xsl"</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:variable name="role"> +    <xsl:if test="$index.on.role != 0"> +      <xsl:value-of select="@role"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:if test="$index.on.type != 0"> +      <xsl:value-of select="@type"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="terms" +                select="//indexterm[count(.|key('group-code', +                                          i:group-index(&primary;)) +                                          [&scope;][1]) = 1 +                                and not(@class = 'endofrange')]"/> +  <fo:block> +    <xsl:apply-templates select="$terms" mode="index-div-kosek"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="i:group-index(&primary;)" data-type="number"/> +    </xsl:apply-templates> +  </fo:block> +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-kosek"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" +                select="i:group-index(&primary;)"/> + +  <xsl:variable name="lang"> +    <xsl:call-template name="l10n.language"/> +  </xsl:variable> + +  <xsl:if test="key('group-code', $key)[&scope;] +                [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> +    <fo:block> +      <xsl:call-template name="indexdiv.title"> +        <xsl:with-param name="titlecontent"> +          <xsl:choose> +            <xsl:when test="$key = 0"> +              <xsl:call-template name="gentext"> +                <xsl:with-param name="key" select="'index symbols'"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:otherwise> +              <xsl:value-of select="i:group-letter($key)"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +      </xsl:call-template> +      <fo:block> +        <xsl:apply-templates select="key('group-code', $key)[&scope;] +                                     [count(.|key('primary', &primary;) +                                     [&scope;][1])=1]" +                             mode="index-primary"> +          <xsl:sort select="&primary;" lang="{$lang}"/> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +        </xsl:apply-templates> +      </fo:block> +    </fo:block> +  </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx-ng.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx-ng.xsl new file mode 100644 index 0000000..8acc0e9 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx-ng.xsl @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                version="1.0"> + +<!-- ******************************************************************** +     $Id: autoidx-ng.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     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/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx.xsl new file mode 100644 index 0000000..c80d24d --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autoidx.xsl @@ -0,0 +1,1310 @@ +<?xml version="1.0"?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY % common.entities SYSTEM "../common/entities.ent"> +%common.entities; +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                xmlns:exslt="http://exslt.org/common" +                extension-element-prefixes="exslt" +                exclude-result-prefixes="exslt" +                version="1.0"> + +<!-- ******************************************************************** +     $Id: autoidx.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "basic" method derived from Jeni Tennison's work. --> +<!-- The "kosek" method contributed by Jirka Kosek. --> +<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. --> + +<!-- Importing module for kimber or kosek method overrides one of these --> +<xsl:param name="kimber.imported" select="0"/> +<xsl:param name="kosek.imported" select="0"/> + +<!-- These keys used primary in all methods --> +<xsl:key name="letter" +         match="indexterm" +         use="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> + +<xsl:key name="primary" +         match="indexterm" +         use="&primary;"/> + +<xsl:key name="secondary" +         match="indexterm" +         use="concat(&primary;, &sep;, &secondary;)"/> + +<xsl:key name="tertiary" +         match="indexterm" +         use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> + +<xsl:key name="endofrange" +         match="indexterm[@class='endofrange']" +         use="@startref"/> + +<xsl:key name="see-also" +         match="indexterm[seealso]" +         use="concat(&primary;, &sep;,  +                     &secondary;, &sep;,  +                     &tertiary;, &sep;, seealso)"/> + +<xsl:key name="see" +         match="indexterm[see]" +         use="concat(&primary;, &sep;,  +                     &secondary;, &sep;,  +                     &tertiary;, &sep;, see)"/> + + +<xsl:template name="generate-index"> +  <xsl:param name="scope" select="(ancestor::book|/)[last()]"/> + +  <xsl:choose> +    <xsl:when test="$index.method = 'kosek'"> +      <xsl:call-template name="generate-kosek-index"> +        <xsl:with-param name="scope" select="$scope"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$index.method = 'kimber'"> +      <xsl:call-template name="generate-kimber-index"> +        <xsl:with-param name="scope" select="$scope"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:call-template name="generate-basic-index"> +        <xsl:with-param name="scope" select="$scope"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> +       +<xsl:template name="generate-basic-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="role"> +    <xsl:if test="$index.on.role != 0"> +      <xsl:value-of select="@role"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:if test="$index.on.type != 0"> +      <xsl:value-of select="@type"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="terms" +                select="//indexterm +                        [count(.|key('letter', +                          translate(substring(&primary;, 1, 1), +                             &lowercase;, +                             &uppercase;)) +                          [&scope;][1]) = 1 +                          and not(@class = 'endofrange')]"/> + +  <xsl:variable name="alphabetical" +                select="$terms[contains(concat(&lowercase;, &uppercase;), +                                        substring(&primary;, 1, 1))]"/> + +  <xsl:variable name="others" select="$terms[not(contains( +                                        concat(&lowercase;, +                                        &uppercase;), +                                        substring(&primary;, 1, 1)))]"/> +  <fo:block> +    <xsl:if test="$others"> +      <xsl:call-template name="indexdiv.title"> +        <xsl:with-param name="titlecontent"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'index symbols'"/> +          </xsl:call-template> +        </xsl:with-param> +      </xsl:call-template> + +      <fo:block> +        <xsl:apply-templates select="$others[count(.|key('primary', +                                     &primary;)[&scope;][1]) = 1]" +                             mode="index-symbol-div"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort select="translate(&primary;, &lowercase;,  +                            &uppercase;)"/> +        </xsl:apply-templates> +      </fo:block> +    </xsl:if> + +    <xsl:apply-templates select="$alphabetical[count(.|key('letter', +                                 translate(substring(&primary;, 1, 1), +                                           &lowercase;,&uppercase;)) +                                           [&scope;][1]) = 1]" +                         mode="index-div-basic"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </fo:block> +</xsl:template> + +<!-- This template not used if fo/autoidx-kosek.xsl is imported --> +<xsl:template name="generate-kosek-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="contains($vendor, 'libxslt')"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kosek' index method does not </xsl:text> +      <xsl:text>work with the xsltproc XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + + +  <xsl:if test="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
</xsl:text> +      <xsl:text>kosek index extensions be imported:
</xsl:text> +      <xsl:text>  xsl:import href="fo/autoidx-kosek.xsl"</xsl:text> +    </xsl:message> +  </xsl:if> + +</xsl:template> + + +<!-- This template not used if fo/autoidx-kimber.xsl is imported --> +<xsl:template name="generate-kimber-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="not(contains($vendor, 'SAXON '))"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> +      <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="$kimber.imported = 0"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the
</xsl:text> +      <xsl:text>kimber index extensions be imported:
</xsl:text> +      <xsl:text>  xsl:import href="fo/autoidx-kimber.xsl"</xsl:text> +    </xsl:message> +  </xsl:if> + +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-basic"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" +                select="translate(substring(&primary;, 1, 1), +                         &lowercase;,&uppercase;)"/> + +  <xsl:if test="key('letter', $key)[&scope;] +                [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> +    <fo:block> +      <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)"> +        <xsl:call-template name="indexdiv.title"> +          <xsl:with-param name="titlecontent"> +            <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:block xsl:use-attribute-sets="index.entry.properties"> +        <xsl:apply-templates select="key('letter', $key)[&scope;] +                                     [count(.|key('primary', &primary;) +                                     [&scope;][1])=1]" +                             mode="index-primary"> +          <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +        </xsl:apply-templates> +      </fo:block> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-symbol-div"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" +                select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> + +  <fo:block xsl:use-attribute-sets="index.entry.properties"> +    <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]" +                         mode="index-primary"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </fo:block> +</xsl:template> + +<xsl:template match="indexterm" mode="index-primary"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" select="&primary;"/> +  <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:block> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute> +    </xsl:if> +    <xsl:value-of select="primary"/> + +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:if test="$refs[not(see) and not(secondary)]"> +          <xsl:copy-of select="$term.separator"/> +          <xsl:variable name="primary" select="&primary;"/> +          <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/> +          <rx:page-index list-separator="{$number.separator}" +                         range-separator="{$range.separator}"> +            <xsl:if test="$refs[@significance='preferred'][not(see) and not(secondary)]"> +              <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties" +                ref-key="{$primary.significant}"/> +            </xsl:if> +            <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see) and not(secondary)]"> +              <rx:index-item xsl:use-attribute-sets="xep.index.item.properties" +                ref-key="{$primary}"/> +            </xsl:if> +          </rx:page-index>         +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:variable name="page-number-citations"> +          <xsl:for-each select="$refs[not(see)  +                                and not(secondary)]"> +            <xsl:apply-templates select="." mode="reference"> +              <xsl:with-param name="scope" select="$scope"/> +              <xsl:with-param name="role" select="$role"/> +              <xsl:with-param name="type" select="$type"/> +              <xsl:with-param name="position" select="position()"/> +            </xsl:apply-templates> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:choose> +          <xsl:when test="$passivetex.extensions != '0'"> +            <fotex:sort xmlns:fotex="http://www.tug.org/fotex"> +              <xsl:copy-of select="$page-number-citations"/> +            </fotex:sort> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$page-number-citations"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:if test="$refs[not(secondary)]/*[self::see]"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]" +                           mode="index-see"> +         <xsl:with-param name="scope" select="$scope"/> +         <xsl:with-param name="role" select="$role"/> +         <xsl:with-param name="type" select="$type"/> +         <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </xsl:if> + +  </fo:block> + +  <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]"> +    <fo:block start-indent="1pc"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]" +                           mode="index-seealso"> +         <xsl:with-param name="scope" select="$scope"/> +         <xsl:with-param name="role" select="$role"/> +         <xsl:with-param name="type" select="$type"/> +         <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +      <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]" +                           mode="index-secondary"> +       <xsl:with-param name="scope" select="$scope"/> +       <xsl:with-param name="role" select="$role"/> +       <xsl:with-param name="type" select="$type"/> +       <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-secondary"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/> +  <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:block> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute> +    </xsl:if> +    <xsl:value-of select="secondary"/> + +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:if test="$refs[not(see) and not(tertiary)]"> +          <xsl:copy-of select="$term.separator"/> +          <xsl:variable name="primary" select="&primary;"/> +          <xsl:variable name="secondary" select="&secondary;"/> +          <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/> +          <rx:page-index list-separator="{$number.separator}" +                         range-separator="{$range.separator}"> +            <xsl:if test="$refs[@significance='preferred'][not(see) and not(tertiary)]"> +              <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary.significant"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +            <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see) and not(tertiary)]"> +              <rx:index-item xsl:use-attribute-sets="xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +          </rx:page-index> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:variable name="page-number-citations"> +          <xsl:for-each select="$refs[not(see)  +                                and not(tertiary)]"> +            <xsl:apply-templates select="." mode="reference"> +              <xsl:with-param name="scope" select="$scope"/> +              <xsl:with-param name="role" select="$role"/> +              <xsl:with-param name="type" select="$type"/> +              <xsl:with-param name="position" select="position()"/> +            </xsl:apply-templates> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:choose> +          <xsl:when test="$passivetex.extensions != '0'"> +            <fotex:sort xmlns:fotex="http://www.tug.org/fotex"> +              <xsl:copy-of select="$page-number-citations"/> +            </fotex:sort> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$page-number-citations"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:if test="$refs[not(tertiary)]/*[self::see]"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]" +                           mode="index-see"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +        <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </xsl:if> + +  </fo:block> + +  <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]"> +    <fo:block start-indent="2pc"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]" +                           mode="index-seealso"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +      <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]"  +                           mode="index-tertiary"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-tertiary"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> +  <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:block> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:suppress-duplicate-page-number">true</xsl:attribute> +    </xsl:if> +    <xsl:value-of select="tertiary"/> + +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:if test="$refs[not(see)]"> +          <xsl:copy-of select="$term.separator"/> +          <xsl:variable name="primary" select="&primary;"/> +          <xsl:variable name="secondary" select="&secondary;"/> +          <xsl:variable name="tertiary" select="&tertiary;"/> +          <xsl:variable name="primary.significant" select="concat(&primary;, $significant.flag)"/> +          <rx:page-index list-separator="{$number.separator}" +                         range-separator="{$range.separator}"> +            <xsl:if test="$refs[@significance='preferred'][not(see)]"> +              <rx:index-item xsl:use-attribute-sets="index.preferred.page.properties xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary.significant"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$tertiary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +            <xsl:if test="$refs[not(@significance) or @significance!='preferred'][not(see)]"> +              <rx:index-item xsl:use-attribute-sets="xep.index.item.properties"> +                <xsl:attribute name="ref-key"> +                  <xsl:value-of select="$primary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$secondary"/> +                  <xsl:text>, </xsl:text> +                  <xsl:value-of select="$tertiary"/> +                </xsl:attribute> +              </rx:index-item> +            </xsl:if> +          </rx:page-index> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:variable name="page-number-citations"> +          <xsl:for-each select="$refs[not(see)]"> +            <xsl:apply-templates select="." mode="reference"> +              <xsl:with-param name="scope" select="$scope"/> +              <xsl:with-param name="role" select="$role"/> +              <xsl:with-param name="type" select="$type"/> +              <xsl:with-param name="position" select="position()"/> +            </xsl:apply-templates> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:choose> +          <xsl:when test="$passivetex.extensions != '0'"> +            <fotex:sort xmlns:fotex="http://www.tug.org/fotex"> +              <xsl:copy-of select="$page-number-citations"/> +            </fotex:sort> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$page-number-citations"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:if test="$refs/see"> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]" +                           mode="index-see"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +        <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </xsl:if> + +  </fo:block> + +  <xsl:if test="$refs/seealso"> +    <fo:block> +      <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]" +                           mode="index-seealso"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +        <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="reference"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:param name="position" select="0"/> +  <xsl:param name="separator" select="''"/> + +  <xsl:variable name="term.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.term.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="range.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.range.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$separator != ''"> +      <xsl:value-of select="$separator"/> +    </xsl:when> +    <xsl:when test="$position = 1"> +      <xsl:value-of select="$term.separator"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$number.separator"/> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="@zone and string(@zone)"> +      <xsl:call-template name="reference"> +        <xsl:with-param name="zones" select="normalize-space(@zone)"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="ancestor::*[contains(local-name(),'info') and not(starts-with(local-name(),'info'))]"> +      <xsl:call-template name="info.reference"> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"/> +      </xsl:variable> + +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> + +      <xsl:if test="key('endofrange', $id)[&scope;]"> +        <xsl:apply-templates select="key('endofrange', $id)[&scope;][last()]" +                             mode="reference"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:with-param name="separator" select="$range.separator"/> +        </xsl:apply-templates> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="reference"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:param name="zones"/> + +  <xsl:variable name="number.separator"> +    <xsl:call-template name="index.separator"> +      <xsl:with-param name="key" select="'index.number.separator'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="contains($zones, ' ')"> +      <xsl:variable name="zone" select="substring-before($zones, ' ')"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +           <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> + +      <xsl:if test="$passivetex.extensions = '0'"> +        <xsl:copy-of select="$number.separator"/> +      </xsl:if> +      <xsl:call-template name="reference"> +        <xsl:with-param name="zones" select="substring-after($zones, ' ')"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="zone" select="$zones"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="info.reference"> +  <!-- This is not perfect. It doesn't treat indexterm inside info element as a range covering whole parent of info. +       It also not work when there is no ID generated for parent element. But it works in the most common cases. --> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:variable name="target" select="(ancestor::appendix|ancestor::article|ancestor::bibliography|ancestor::book| +                                       ancestor::chapter|ancestor::glossary|ancestor::part|ancestor::preface| +                                       ancestor::refentry|ancestor::reference|ancestor::refsect1|ancestor::refsect2| +                                       ancestor::refsect3|ancestor::refsection|ancestor::refsynopsisdiv| +                                       ancestor::sect1|ancestor::sect2|ancestor::sect3|ancestor::sect4|ancestor::sect5| +                                       ancestor::section|ancestor::setindex|ancestor::set|ancestor::sidebar)[&scope;]"/> +   +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$target[1]"/> +    </xsl:call-template> +  </xsl:variable> +   +  <fo:basic-link internal-destination="{$id}" +                 xsl:use-attribute-sets="index.page.number.properties"> +    <fo:page-number-citation ref-id="{$id}"/> +  </fo:basic-link> +</xsl:template> + +<xsl:template match="indexterm" mode="index-see"> +   <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +   <fo:inline> +     <xsl:text> (</xsl:text> +     <xsl:call-template name="gentext"> +       <xsl:with-param name="key" select="'see'"/> +     </xsl:call-template> +     <xsl:text> </xsl:text> +     <xsl:value-of select="see"/> +     <xsl:text>)</xsl:text> +   </fo:inline> +</xsl:template> + +<xsl:template match="indexterm" mode="index-seealso"> +   <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:for-each select="seealso"> +    <xsl:sort select="translate(., &lowercase;, &uppercase;)"/> +    <fo:block> +      <xsl:text>(</xsl:text> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'seealso'"/> +      </xsl:call-template> +      <xsl:text> </xsl:text> +      <xsl:value-of select="."/> +      <xsl:text>)</xsl:text> +    </fo:block> +  </xsl:for-each> + +</xsl:template> + +<!-- ====================================================================== --> + +<xsl:template name="generate-index-markup"> +  <xsl:param name="scope" select="(ancestor::book|/)[last()]"/> +  <xsl:param name="role" select="@role"/> +  <xsl:param name="type" select="@type"/> + +  <xsl:variable name="terms" select="$scope//indexterm[count(.|key('letter', +                                     translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[&scope;][1]) = 1]"/> +  <xsl:variable name="alphabetical" +                select="$terms[contains(concat(&lowercase;, &uppercase;), +                                        substring(&primary;, 1, 1))]"/> +  <xsl:variable name="others" select="$terms[not(contains(concat(&lowercase;, +                                                 &uppercase;), +                                             substring(&primary;, 1, 1)))]"/> + +  <xsl:text><index>
</xsl:text> +  <xsl:if test="$others"> +    <xsl:text>
<indexdiv>
</xsl:text> +    <xsl:text><title></xsl:text> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'index symbols'"/> +    </xsl:call-template> +    <xsl:text></title>
</xsl:text> +    <xsl:apply-templates select="$others[count(.|key('primary', +                                 &primary;)[&scope;][1]) = 1]" +                         mode="index-symbol-div-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:text></indexdiv>
</xsl:text> +  </xsl:if> + +  <xsl:apply-templates select="$alphabetical[count(.|key('letter', +                               translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;))[&scope;][1]) = 1]" +                       mode="index-div-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +  </xsl:apply-templates> +  <xsl:text></index>
</xsl:text> +</xsl:template> + +<xsl:template match="*" mode="index-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:text><</xsl:text> +  <xsl:value-of select="local-name(.)"/> +  <xsl:text>>
</xsl:text> +  <xsl:apply-templates mode="index-markup"> +    <xsl:with-param name="scope" select="$scope"/> +    <xsl:with-param name="role" select="$role"/> +    <xsl:with-param name="type" select="$type"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> +  <xsl:text>
<indexdiv>
</xsl:text> +  <xsl:text><title></xsl:text> +  <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/> +  <xsl:text></title>
</xsl:text> + +  <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]" +                       mode="index-primary-markup"> +    <xsl:with-param name="scope" select="$scope"/> +    <xsl:with-param name="role" select="$role"/> +    <xsl:with-param name="type" select="$type"/> +    <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +  </xsl:apply-templates> +  <xsl:text></indexdiv>
</xsl:text> +</xsl:template> + +<xsl:template match="indexterm" mode="index-symbol-div-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> + +  <xsl:apply-templates select="key('letter', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]" +                       mode="index-primary-markup"> +    <xsl:with-param name="scope" select="$scope"/> +    <xsl:with-param name="role" select="$role"/> +    <xsl:with-param name="type" select="$type"/> +    <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="indexterm" mode="index-primary-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="&primary;"/> +  <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/> +  <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/> + +  <xsl:text>
<indexentry>
</xsl:text> +  <xsl:text><primaryie></xsl:text> +  <xsl:text><phrase></xsl:text> +  <xsl:call-template name="escape-text"> +    <xsl:with-param name="text" select="string(primary)"/> +  </xsl:call-template> +  <xsl:text></phrase></xsl:text> +  <xsl:if test="$pages">,</xsl:if> +  <xsl:text>
</xsl:text> + +  <xsl:for-each select="$pages"> +    <xsl:apply-templates select="." mode="reference-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +    </xsl:apply-templates> +  </xsl:for-each> + +  <xsl:text></primaryie>
</xsl:text> + +  <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::see or self::seealso]"> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]" +                         mode="index-see-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]" +                         mode="index-seealso-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]"  +                         mode="index-secondary-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </xsl:if> +  <xsl:text></indexentry>
</xsl:text> +</xsl:template> + +<xsl:template match="indexterm" mode="index-secondary-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/> +  <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/> +  <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/> + +  <xsl:text><secondaryie></xsl:text> +  <xsl:text><phrase></xsl:text> +  <xsl:call-template name="escape-text"> +    <xsl:with-param name="text" select="string(secondary)"/> +  </xsl:call-template> +  <xsl:text></phrase></xsl:text> +  <xsl:if test="$pages">,</xsl:if> +  <xsl:text>
</xsl:text> + +  <xsl:for-each select="$pages"> +    <xsl:apply-templates select="." mode="reference-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +    </xsl:apply-templates> +  </xsl:for-each> + +  <xsl:text></secondaryie>
</xsl:text> + +  <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::see or self::seealso]"> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]" +                         mode="index-see-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]" +                         mode="index-seealso-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]"  +                         mode="index-tertiary-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-tertiary-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> +  <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/> +  <xsl:variable name="pages" select="$refs[not(see) and not(seealso)]"/> + +  <xsl:text><tertiaryie></xsl:text> +  <xsl:text><phrase></xsl:text> +  <xsl:call-template name="escape-text"> +    <xsl:with-param name="text" select="string(tertiary)"/> +  </xsl:call-template> +  <xsl:text></phrase></xsl:text> +  <xsl:if test="$pages">,</xsl:if> +  <xsl:text>
</xsl:text> + +  <xsl:for-each select="$pages"> +    <xsl:apply-templates select="." mode="reference-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +    </xsl:apply-templates> +  </xsl:for-each> + +  <xsl:text></tertiaryie>
</xsl:text> + +  <xsl:variable name="see" select="$refs/see | $refs/seealso"/> +  <xsl:if test="$see"> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]" +                         mode="index-see-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]" +                         mode="index-seealso-markup"> +      <xsl:with-param name="scope" select="$scope"/> +      <xsl:with-param name="role" select="$role"/> +      <xsl:with-param name="type" select="$type"/> +      <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> +    </xsl:apply-templates> +  </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="reference-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> + +  <xsl:choose> +    <xsl:when test="@zone and string(@zone)"> +      <xsl:call-template name="reference-markup"> +        <xsl:with-param name="zones" select="normalize-space(@zone)"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"/> +      </xsl:variable> + + +      <xsl:choose> +        <xsl:when test="@startref and @class='endofrange'"> +          <xsl:text><phrase role="pageno"></xsl:text> +          <xsl:text><link linkend="</xsl:text> +          <xsl:value-of select="@startref"/> +          <xsl:text>"></xsl:text> +          <fo:basic-link internal-destination="{@startref}" +                     xsl:use-attribute-sets="index.page.number.properties"> +            <fo:page-number-citation ref-id="{@startref}"/> +            <xsl:text>-</xsl:text> +            <fo:page-number-citation ref-id="{$id}"/> +          </fo:basic-link> +          <xsl:text></link></xsl:text> +          <xsl:text></phrase>
</xsl:text> +        </xsl:when> +        <xsl:otherwise> +          <xsl:text><phrase role="pageno"></xsl:text> +          <xsl:if test="$id"> +            <xsl:text><link linkend="</xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text>"></xsl:text> +          </xsl:if> +          <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +            <fo:page-number-citation ref-id="{$id}"/> +          </fo:basic-link> +          <xsl:if test="$id"> +            <xsl:text></link></xsl:text> +          </xsl:if> +          <xsl:text></phrase>
</xsl:text> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="reference-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <xsl:param name="zones"/> +  <xsl:choose> +    <xsl:when test="contains($zones, ' ')"> +      <xsl:variable name="zone" select="substring-before($zones, ' ')"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:text><phrase fole="pageno"></xsl:text> +      <xsl:if test="$target[1]/@id or $target[1]/@xml:id"> +        <xsl:text><link linkend="</xsl:text> +        <xsl:value-of select="$id"/> +        <xsl:text>"></xsl:text> +      </xsl:if> +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +      <xsl:if test="$target[1]/@id or $target[1]/@xml:id"> +        <xsl:text></link></xsl:text> +      </xsl:if> +      <xsl:text></phrase>
</xsl:text> + +      <xsl:call-template name="reference"> +        <xsl:with-param name="zones" select="substring-after($zones, ' ')"/> +        <xsl:with-param name="scope" select="$scope"/> +        <xsl:with-param name="role" select="$role"/> +        <xsl:with-param name="type" select="$type"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="zone" select="$zones"/> +      <xsl:variable name="target" select="key('id', $zone)[&scope;]"/> + +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target[1]"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:text><phrase role="pageno"></xsl:text> +      <xsl:if test="$target[1]/@id or target[1]/@xml:id"> +        <xsl:text><link linkend="</xsl:text> +        <xsl:value-of select="$id"/> +        <xsl:text>"></xsl:text> +      </xsl:if> +      <fo:basic-link internal-destination="{$id}" +                     xsl:use-attribute-sets="index.page.number.properties"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +      <xsl:if test="$target[1]/@id or target[1]/@xml:id"> +        <xsl:text></link></xsl:text> +      </xsl:if> +      <xsl:text></phrase>
</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="indexterm" mode="index-see-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <fo:block> +    <xsl:text><seeie></xsl:text> +    <xsl:text><phrase></xsl:text> +    <xsl:call-template name="escape-text"> +      <xsl:with-param name="text" select="string(see)"/> +    </xsl:call-template> +    <xsl:text></phrase></xsl:text> +    <xsl:text></seeie>
</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="indexterm" mode="index-seealso-markup"> +  <xsl:param name="scope" select="."/> +  <xsl:param name="role" select="''"/> +  <xsl:param name="type" select="''"/> +  <fo:block> +    <xsl:text><seealsoie></xsl:text> +    <xsl:text><phrase></xsl:text> +    <xsl:call-template name="escape-text"> +      <xsl:with-param name="text" select="string(seealso)"/> +    </xsl:call-template> +    <xsl:text></phrase></xsl:text> +    <xsl:text></seealsoie>
</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template name="escape-text"> +  <xsl:param name="text" select="''"/> + +  <xsl:variable name="ltpos" select="substring-before($text, '<')"/> +  <xsl:variable name="amppos" select="substring-before($text, '&')"/> + +  <xsl:choose> +    <xsl:when test="contains($text,'<') and contains($text, '&') +                    and string-length($ltpos) < string-length($amppos)"> +      <xsl:value-of select="$ltpos"/> +      <xsl:text>&lt;</xsl:text> +      <xsl:call-template name="escape-text"> +        <xsl:with-param name="text" select="substring-after($text, '<')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:when test="contains($text,'<') and contains($text, '&') +                    and string-length($amppos) < string-length($ltpos)"> +      <xsl:value-of select="$amppos"/> +      <xsl:text>&amp;</xsl:text> +      <xsl:call-template name="escape-text"> +        <xsl:with-param name="text" select="substring-after($text, '&')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:when test="contains($text, '<')"> +      <xsl:value-of select="$ltpos"/> +      <xsl:text>&lt;</xsl:text> +      <xsl:call-template name="escape-text"> +        <xsl:with-param name="text" select="substring-after($text, '<')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:when test="contains($text, '&')"> +      <xsl:value-of select="$amppos"/> +      <xsl:text>&amp;</xsl:text> +      <xsl:call-template name="escape-text"> +        <xsl:with-param name="text" select="substring-after($text, '&')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:value-of select="$text"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="index.separator"> +  <xsl:param name="key" select="''"/> +  <xsl:param name="lang"> +    <xsl:call-template name="l10n.language"/> +  </xsl:param> + +  <xsl:choose> +    <xsl:when test="$key = 'index.term.separator'"> +      <xsl:choose> +        <!-- Use the override if not blank --> +        <xsl:when test="$index.term.separator != ''"> +          <xsl:copy-of select="$index.term.separator"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="gentext.template"> +            <xsl:with-param name="lang" select="$lang"/> +            <xsl:with-param name="context">index</xsl:with-param> +            <xsl:with-param name="name">term-separator</xsl:with-param> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="$key = 'index.number.separator'"> +      <xsl:choose> +        <!-- Use the override if not blank --> +        <xsl:when test="$index.number.separator != ''"> +          <xsl:copy-of select="$index.number.separator"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="gentext.template"> +            <xsl:with-param name="lang" select="$lang"/> +            <xsl:with-param name="context">index</xsl:with-param> +            <xsl:with-param name="name">number-separator</xsl:with-param> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="$key = 'index.range.separator'"> +      <xsl:choose> +        <!-- Use the override if not blank --> +        <xsl:when test="$index.range.separator != ''"> +          <xsl:copy-of select="$index.range.separator"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="gentext.template"> +            <xsl:with-param name="lang" select="$lang"/> +            <xsl:with-param name="context">index</xsl:with-param> +            <xsl:with-param name="name">range-separator</xsl:with-param> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autotoc.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autotoc.xsl new file mode 100644 index 0000000..e1ac45f --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/autotoc.xsl @@ -0,0 +1,855 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: autotoc.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template name="set.toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" select="book|setindex"/> + +  <xsl:if test="$nodes"> +    <fo:block id="toc...{$id}" +              xsl:use-attribute-sets="toc.margin.properties"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:attribute name="axf:outline-level">1</xsl:attribute> +        <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +        <xsl:attribute name="axf:outline-title"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'TableofContents'"/> +          </xsl:call-template> +        </xsl:attribute> +      </xsl:if> +      <xsl:call-template name="table.of.contents.titlepage"/> +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template name="division.toc"> +  <xsl:param name="toc-context" select="."/> +  <xsl:param name="toc.title.p" select="true()"/> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" +                select="$toc-context/part +                        |$toc-context/reference +                        |$toc-context/preface +                        |$toc-context/chapter +                        |$toc-context/appendix +                        |$toc-context/article +                        |$toc-context/bibliography +                        |$toc-context/glossary +                        |$toc-context/index"/> + +  <xsl:if test="$nodes"> +    <fo:block id="toc...{$cid}" +              xsl:use-attribute-sets="toc.margin.properties"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:attribute name="axf:outline-level">1</xsl:attribute> +        <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +        <xsl:attribute name="axf:outline-title"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'TableofContents'"/> +          </xsl:call-template> +        </xsl:attribute> +      </xsl:if> +      <xsl:if test="$toc.title.p"> +        <xsl:call-template name="table.of.contents.titlepage"/> +      </xsl:if> +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template name="component.toc"> +  <xsl:param name="toc-context" select="."/> +  <xsl:param name="toc.title.p" select="true()"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" select="section|sect1|refentry +                                     |article|bibliography|glossary +                                     |qandaset[$qanda.in.toc != 0] +                                     |appendix|index"/> +  <xsl:if test="$nodes"> +    <fo:block id="toc...{$id}" +              xsl:use-attribute-sets="toc.margin.properties"> +      <xsl:if test="$toc.title.p"> +        <xsl:call-template name="table.of.contents.titlepage"/> +      </xsl:if> +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template name="component.toc.separator"> +  <!-- Customize to output something between +       component.toc and first output --> +</xsl:template> + +<xsl:template name="section.toc"> +  <xsl:param name="toc-context" select="."/> +  <xsl:param name="toc.title.p" select="true()"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" +                select="section|sect1|sect2|sect3|sect4|sect5|refentry +                        |qandaset[$qanda.in.toc != 0] +                        |bridgehead[$bridgehead.in.toc != 0]"/> + +  <xsl:variable name="level"> +    <xsl:call-template name="section.level"/> +  </xsl:variable> + +  <xsl:if test="$nodes"> +    <fo:block id="toc...{$id}" +              xsl:use-attribute-sets="toc.margin.properties"> + +      <xsl:if test="$toc.title.p"> +        <xsl:call-template name="section.heading"> +          <xsl:with-param name="level" select="$level + 1"/> +          <xsl:with-param name="title"> +            <fo:block space-after="0.5em"> +              <xsl:call-template name="gentext"> +                <xsl:with-param name="key" select="'TableofContents'"/> +              </xsl:call-template> +            </fo:block> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:if> + +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template name="section.toc.separator"> +  <!-- Customize to output something between +       section.toc and first output --> +</xsl:template> +<!-- ==================================================================== --> + +<xsl:template name="toc.line"> +  <xsl:param name="toc-context" select="NOTANODE"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="label"> +    <xsl:apply-templates select="." mode="label.markup"/> +  </xsl:variable> + +  <fo:block xsl:use-attribute-sets="toc.line.properties"> +    <fo:inline keep-with-next.within-line="always"> +      <fo:basic-link internal-destination="{$id}"> +        <xsl:if test="$label != ''"> +          <xsl:copy-of select="$label"/> +          <xsl:value-of select="$autotoc.label.separator"/> +        </xsl:if> +        <xsl:apply-templates select="." mode="titleabbrev.markup"/> +      </fo:basic-link> +    </fo:inline> +    <fo:inline keep-together.within-line="always"> +      <xsl:text> </xsl:text> +      <fo:leader leader-pattern="dots" +                 leader-pattern-width="3pt" +                 leader-alignment="reference-area" +                 keep-with-next.within-line="always"/> +      <xsl:text> </xsl:text>  +      <fo:basic-link internal-destination="{$id}"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +    </fo:inline> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> +<xsl:template name="qandaset.toc"> +  <xsl:param name="toc-context" select="."/> +  <xsl:param name="toc.title.p" select="true()"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" select="qandadiv|qandaentry"/> + +  <xsl:if test="$nodes"> +    <fo:block id="toc...{$id}" +              xsl:use-attribute-sets="toc.margin.properties"> +      <xsl:if test="$toc.title.p"> +        <xsl:call-template name="table.of.contents.titlepage"/> +      </xsl:if> +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template name="qandaset.toc.separator"> +  <!-- Customize to output something between +       qandaset.toc and first output --> +</xsl:template> + +<xsl:template match="qandadiv" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="nodes" select="qandadiv|qandaentry"/> + +  <xsl:if test="$nodes"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> + +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="qandaentry" mode="toc"> +  <xsl:apply-templates select="question" mode="toc"/> +</xsl:template> + +<xsl:template match="question" mode="toc"> +  <xsl:variable name="firstchunk"> +    <xsl:apply-templates select="(*[local-name(.)!='label'])[1]/node()"/> +  </xsl:variable> + +  <xsl:variable name="deflabel"> +    <xsl:choose> +      <xsl:when test="ancestor-or-self::*[@defaultlabel]"> +        <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()] +                              /@defaultlabel"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$qanda.defaultlabel"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="label"> +    <xsl:apply-templates select="." mode="label.markup"/> +  </xsl:variable> + +  <fo:block xsl:use-attribute-sets="toc.line.properties" +	    margin-left="3em" +	    text-indent="-3em" +            end-indent="{$toc.indent.width}pt" +            last-line-end-indent="-{$toc.indent.width}pt"> +    <fo:inline keep-with-next.within-line="always"> +      <fo:basic-link internal-destination="{$id}"> +        <xsl:if test="$label != ''"> +          <xsl:copy-of select="$label"/> +          <xsl:if test="$deflabel = 'number' and not(label)"> +            <xsl:value-of select="$autotoc.label.separator"/> +          </xsl:if> +	  <xsl:text> </xsl:text> +        </xsl:if> +        <xsl:copy-of select="$firstchunk"/> +      </fo:basic-link> +    </fo:inline> +    <fo:inline keep-together.within-line="always"> +      <xsl:text> </xsl:text> +      <fo:leader leader-pattern="dots" +                 leader-pattern-width="3pt" +                 leader-alignment="reference-area" +                 keep-with-next.within-line="always"/> +      <xsl:text> </xsl:text>  +      <fo:basic-link internal-destination="{$id}"> +        <fo:page-number-citation ref-id="{$id}"/> +      </fo:basic-link> +    </fo:inline> +  </fo:block> + +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="book|setindex" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="nodes" select="glossary|bibliography|preface|chapter +                                     |reference|part|article|appendix|index"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 0  +                and $toc.max.depth > $depth.from.context +                and $nodes"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> + +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="part" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="nodes" select="chapter|appendix|preface|reference| +                                     refentry|article|index|glossary| +                                     bibliography"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 0  +                and $toc.max.depth > $depth.from.context +                and $nodes"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> +       +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="reference" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:if test="$toc.section.depth > 0 +                and $toc.max.depth > $depth.from.context +                and refentry"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> +               +      <xsl:apply-templates select="refentry" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="refentry" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="preface|chapter|appendix|article" +              mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="nodes" select="section|sect1 +                                     |qandaset[$qanda.in.toc != 0] +                                     |simplesect[$simplesect.in.toc != 0] +                                     |refentry|appendix"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 0  +                and $toc.max.depth > $depth.from.context +                and $nodes"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> +               +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="sect1" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 1  +                and $toc.max.depth > $depth.from.context +                and sect2"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"/> +      </xsl:attribute> +               +      <xsl:apply-templates select="sect2|qandaset[$qanda.in.toc != 0]"  +                           mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="sect2" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="reldepth" +                select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 2  +                and $toc.max.depth > $depth.from.context +                and sect3"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"> +          <xsl:with-param name="reldepth" select="$reldepth"/> +        </xsl:call-template> +      </xsl:attribute> +               +      <xsl:apply-templates select="sect3|qandaset[$qanda.in.toc != 0]"  +                           mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="sect3" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="reldepth" +                select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 3  +                and $toc.max.depth > $depth.from.context +                and sect4"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"> +          <xsl:with-param name="reldepth" select="$reldepth"/> +        </xsl:call-template> +      </xsl:attribute> +               +      <xsl:apply-templates select="sect4|qandaset[$qanda.in.toc != 0]"  +                           mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="sect4" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> + +  <xsl:variable name="reldepth" +                select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth > 4  +                and $toc.max.depth > $depth.from.context +                and sect5"> +    <fo:block id="toc.{$cid}.{$id}"> +      <xsl:attribute name="margin-left"> +        <xsl:call-template name="set.toc.indent"> +          <xsl:with-param name="reldepth" select="$reldepth"/> +        </xsl:call-template> +      </xsl:attribute> +               +      <xsl:apply-templates select="sect5|qandaset[$qanda.in.toc != 0]"  +                           mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="sect5|simplesect" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="set.toc.indent"> +  <xsl:param name="reldepth"/> + +  <xsl:variable name="depth"> +    <xsl:choose> +      <xsl:when test="$reldepth != ''"> +        <xsl:value-of select="$reldepth"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="count(ancestor::*)"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0 or $passivetex.extensions != 0"> +       <xsl:value-of select="concat($depth*$toc.indent.width, 'pt')"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="concat($toc.indent.width, 'pt')"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + + +<xsl:template match="section" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="depth" select="count(ancestor::section) + 1"/> +  <xsl:variable name="reldepth" +                select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth >= $depth"> +    <xsl:call-template name="toc.line"> +      <xsl:with-param name="toc-context" select="$toc-context"/> +    </xsl:call-template> + +    <xsl:if test="$toc.section.depth > $depth  +                  and $toc.max.depth > $depth.from.context +                  and section"> +      <fo:block id="toc.{$cid}.{$id}"> +        <xsl:attribute name="margin-left"> +          <xsl:call-template name="set.toc.indent"> +            <xsl:with-param name="reldepth" select="$reldepth"/> +          </xsl:call-template> +        </xsl:attribute> +                 +        <xsl:apply-templates select="section|qandaset[$qanda.in.toc != 0]"  +                           mode="toc"> +          <xsl:with-param name="toc-context" select="$toc-context"/> +        </xsl:apply-templates> +      </fo:block> +    </xsl:if> +  </xsl:if> +</xsl:template> + +<xsl:template match="bibliography|glossary" +              mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="index" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:if test="* or $generate.index != 0"> +    <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template match="title" mode="toc"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="list.of.titles"> +  <xsl:param name="titles" select="'table'"/> +  <xsl:param name="nodes" select=".//table"/> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:if test="$nodes"> +    <fo:block id="lot...{$titles}...{$id}"> +      <xsl:choose> +        <xsl:when test="$titles='table'"> +          <xsl:call-template name="list.of.tables.titlepage"/> +        </xsl:when> +        <xsl:when test="$titles='figure'"> +          <xsl:call-template name="list.of.figures.titlepage"/> +        </xsl:when> +        <xsl:when test="$titles='equation'"> +          <xsl:call-template name="list.of.equations.titlepage"/> +        </xsl:when> +        <xsl:when test="$titles='example'"> +          <xsl:call-template name="list.of.examples.titlepage"/> +        </xsl:when> +        <xsl:when test="$titles='procedure'"> +          <xsl:call-template name="list.of.procedures.titlepage"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="list.of.unknowns.titlepage"/> +        </xsl:otherwise> +      </xsl:choose> +      <xsl:apply-templates select="$nodes" mode="toc"> +        <xsl:with-param name="toc-context" select="$toc-context"/> +      </xsl:apply-templates> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="figure|table|example|equation|procedure" mode="toc"> +  <xsl:param name="toc-context" select="."/> +  <xsl:call-template name="toc.line"> +    <xsl:with-param name="toc-context" select="$toc-context"/> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- qandaset handled like a section when qanda.in.toc is set --> +<xsl:template match="qandaset" mode="toc"> +  <xsl:param name="toc-context" select="."/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="cid"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$toc-context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="depth" select="count(ancestor::section) + 1"/> +  <xsl:variable name="reldepth" +                select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + +  <xsl:if test="$toc.section.depth >= $depth"> +    <xsl:call-template name="toc.line"> +      <xsl:with-param name="toc-context" select="$toc-context"/> +    </xsl:call-template> + +    <xsl:if test="$toc.section.depth > $depth  +                  and $toc.max.depth > $depth.from.context +                  and (child::qandadiv or child::qandaentry)"> +      <fo:block id="toc.{$cid}.{$id}"> +        <xsl:attribute name="margin-left"> +          <xsl:call-template name="set.toc.indent"> +            <xsl:with-param name="reldepth" select="$reldepth"/> +          </xsl:call-template> +        </xsl:attribute> +                 +        <xsl:apply-templates select="qandadiv|qandaentry" mode="toc"> +          <xsl:with-param name="toc-context" select="$toc-context"/> +        </xsl:apply-templates> +      </fo:block> +    </xsl:if> +  </xsl:if> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/axf.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/axf.xsl new file mode 100644 index 0000000..ae24be4 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/axf.xsl @@ -0,0 +1,110 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: axf.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** --> + +<xsl:template name="axf-document-information"> + +    <xsl:variable name="authors" select="(//author|//editor| +                                          //corpauthor|//authorgroup)[1]"/> +    <xsl:if test="$authors"> +      <xsl:variable name="author"> +        <xsl:choose> +          <xsl:when test="$authors[self::authorgroup]"> +            <xsl:call-template name="person.name.list"> +              <xsl:with-param name="person.list"  +                 select="$authors/*[self::author|self::corpauthor| +                               self::othercredit|self::editor]"/> +            </xsl:call-template> +          </xsl:when> +          <xsl:when test="$authors[self::corpauthor]"> +            <xsl:value-of select="$authors"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="person.name"> +              <xsl:with-param name="node" select="$authors"/> +            </xsl:call-template> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:element name="axf:document-info"> +        <xsl:attribute name="name">author</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:value-of select="normalize-space($author)"/> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> + +    <xsl:variable name="title"> +      <xsl:apply-templates select="/*[1]" mode="label.markup"/> +      <xsl:apply-templates select="/*[1]" mode="title.markup"/> +    </xsl:variable> + +    <!-- * see bug report #1465301 - mzjn --> +    <axf:document-info name="title"> +      <xsl:attribute name="value"> +        <xsl:value-of select="normalize-space($title)"/> +      </xsl:attribute> +    </axf:document-info> + +    <xsl:if test="//keyword"> +      <xsl:element name="axf:document-info"> +        <xsl:attribute name="name">keywords</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:for-each select="//keyword"> +            <xsl:value-of select="normalize-space(.)"/> +            <xsl:if test="position() != last()"> +              <xsl:text>, </xsl:text> +            </xsl:if> +          </xsl:for-each> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> + +    <xsl:if test="//subjectterm"> +      <xsl:element name="axf:document-info"> +        <xsl:attribute name="name">subject</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:for-each select="//subjectterm"> +            <xsl:value-of select="normalize-space(.)"/> +            <xsl:if test="position() != last()"> +              <xsl:text>, </xsl:text> +            </xsl:if> +          </xsl:for-each> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> + +</xsl:template> + +<!-- These properties are added to fo:simple-page-master --> +<xsl:template name="axf-page-master-properties"> +  <xsl:param name="page.master" select="''"/> + +  <xsl:if test="$crop.marks != 0"> +    <xsl:attribute name="axf:printer-marks">crop</xsl:attribute> +    <xsl:attribute name="axf:bleed"><xsl:value-of +                          select="$crop.mark.bleed"/></xsl:attribute> +    <xsl:attribute name="axf:printer-marks-line-width"><xsl:value-of +                          select="$crop.mark.width"/></xsl:attribute> +    <xsl:attribute name="axf:crop-offset"><xsl:value-of +                          select="$crop.mark.offset"/></xsl:attribute> +  </xsl:if> + +  <xsl:call-template name="user-axf-page-master-properties"> +    <xsl:with-param name="page.master" select="$page.master"/> +  </xsl:call-template> + +</xsl:template> + +<xsl:template name="user-axf-page-master-properties"> +  <xsl:param name="page.master" select="''"/> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/biblio-iso690.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/biblio-iso690.xsl new file mode 100644 index 0000000..f2466d7 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/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" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: biblio-iso690.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     The original code for processing bibliography in ISO690 style +     was provided by Jana Dvorakova <jana4u@seznam.cz> + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- if biblioentry.alt.primary.seps is set to nonzero value then use alternative separators for primary responsibility - $alt.person.two.sep, $alt.person.last.sep, $alt.person.more.sep  --> +<xsl:param name="biblioentry.alt.primary.seps" select="0"/> + +<!-- how many authors will be printed if there is more than three authors - set to number 1 (default value), 2 or 3 --> +<xsl:param name="biblioentry.primary.count" select="1"/> + +<!-- ==================================================================== --> + +<xsl:template name="iso690.makecitation"> +<!-- Types of resources --> +  <xsl:choose> + +    <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ENTIRE MESSAGE SYSTEM --> +    <!-- same as Monographs --> +    <xsl:when test="./@role='messagesystem'"> +      <xsl:call-template name="iso690.monogr"/> +    </xsl:when> + +    <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ELECTRONIC MESSAGES --> +    <!-- same as Contributions to Monographs --> +    <xsl:when test="./@role='message'"> +      <xsl:call-template name="iso690.paper.mon"/> +    </xsl:when> + +    <!-- SERIALS --> +    <xsl:when test="./@role='serial' or ./biblioid/@class='issn' or ./issn"> +      <xsl:call-template name="iso690.serial"/> +    </xsl:when> + +    <!-- PARTS OF MONOGRAPHS --> +    <xsl:when test="./@role='part' or (./bibliomisc[@role='secnum']|./bibliomisc[@role='sectitle'])"> +      <xsl:call-template name="iso690.monogr.part"/> +    </xsl:when> + +    <!-- CONTRIBUTIONS TO MONOGRAPHS --> +    <xsl:when test="./@role='contribution' or (./biblioset/@relation='part' and ./biblioset/@relation='book')"> +      <xsl:call-template name="iso690.paper.mon"/> +    </xsl:when> + +    <!-- ARTICLES, ETC., IN SERIALS --> +    <xsl:when test="./@role='article' or (./biblioset/@relation='journal' and ./biblioset/@relation='article')"> +      <xsl:call-template name="iso690.article"/> +    </xsl:when> + +    <!-- PATENT DOCUMENTS --> +    <xsl:when test="./@role='patent' or (./bibliomisc[@role='patenttype'] and ./bibliomisc[@role='patentnum'])"> +      <xsl:call-template name="iso690.patent"/> +    </xsl:when> + +    <!-- MONOGRAPHS --> +    <xsl:otherwise> +      <xsl:call-template name="iso690.monogr"/> +    </xsl:otherwise> + +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- MONOGRAPHS --> +<xsl:template name="iso690.monogr"> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility --> +  <xsl:call-template name="iso690.secondary"/> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"/> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template name="iso690.pub"/> +  <!-- Extent --> +  <xsl:call-template name="iso690.extent"/> +  <!-- Series --> +  <xsl:call-template name="iso690.serie"/> +  <!-- Notes --> +  <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access --> +  <xsl:call-template name="iso690.access"/> +  <!-- Standard number --> +  <xsl:call-template name="iso690.isbn"/> +</xsl:template> + +<!-- SERIALS --> +<xsl:template name="iso690.serial"> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Responsibility [nonEL] --> +  <xsl:if test="not(./bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"> +    <xsl:with-param name="after" select="./bibliomisc[@role='issuing']"/> +  </xsl:call-template> +  <!-- Issue designation (date and/or n°) [nonEL] --> +  <xsl:if test="not(./bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.issuing"/> +  </xsl:if> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template name="iso690.pub"/> +  <!-- Series --> +  <xsl:call-template name="iso690.serie"/> +  <!-- Notes --> +  <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access --> +  <xsl:call-template name="iso690.access"/> +  <!-- Standard number --> +  <xsl:call-template name="iso690.issn"/> +</xsl:template> + +<!-- PARTS OF MONOGRAPHS --> +<xsl:template name="iso690.monogr.part"> +  <!-- Primary responsibility of host document --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title and Type of medium of host document --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility of host document [EL] --> +  <xsl:if test="./bibliomisc[@role='medium']"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"> +    <xsl:with-param name="after" select="./volumenum"/> +  </xsl:call-template> +  <!-- Numeration of the part [nonEL]--> +  <xsl:if test="not(./bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.partnr"/> +  <!-- Subordinate responsibility [nonEL] --> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template name="iso690.pub"/> +  <!-- Location within host --> +  <xsl:call-template name="iso690.part.location"/> +  <xsl:if test="./bibliomisc[@role='medium']"> +  <!-- Numeration within host document [EL] --> +  <!-- Notes [EL] --> +    <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access [EL] --> +    <xsl:call-template name="iso690.access"/> +  <!-- Standard number [EL] --> +    <xsl:call-template name="iso690.isbn"/> +  </xsl:if> +</xsl:template> + +<!-- CONTRIBUTIONS TO MONOGRAPHS --> +<xsl:template name="iso690.paper.mon"> +<!-- Contribution --> +  <xsl:apply-templates mode="iso690.paper.part" select="./biblioset[@relation='part']"/> +<!-- In --> +  <xsl:text>In </xsl:text> +<!-- Host --> +  <xsl:apply-templates mode="iso690.paper.book" select="./biblioset[@relation='book']"/> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.paper.part"> +<!-- Contribution --> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title --> +  <xsl:call-template name="iso690.title"> +    <xsl:with-param name="italic" select="0"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.paper.book"> +<!-- Host --> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility [EL] --> +  <xsl:if test="./bibliomisc[@role='medium']"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"/> +  <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +  <xsl:call-template  name="iso690.paper.pub"/> +  <!-- Numeration within host document [EL] --> +  <!-- Location within host --> +  <xsl:call-template name="iso690.location"/> +  <xsl:if test="./bibliomisc[@role='medium']"> +  <!-- Notes [EL] --> +    <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access [EL] --> +    <xsl:call-template name="iso690.access"/> +  <!-- Standard number [EL] --> +    <xsl:call-template name="iso690.isbn"/> +  </xsl:if> +</xsl:template> + +<!-- ARTICLES, ETC., IN SERIALS --> +<xsl:template name="iso690.article"> +<!-- Article --> +  <xsl:apply-templates mode="iso690.article.art" select="./biblioset[@relation='article']"/> +<!-- Serial --> +  <xsl:apply-templates mode="iso690.article.jour" select="./biblioset[@relation='journal']"/> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.article.art"> +<!-- Article --> +  <!-- Primary responsibility --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title --> +  <xsl:call-template name="iso690.title"> +    <xsl:with-param name="italic" select="0"/> +  </xsl:call-template> +  <!-- Subordinate responsibility [nonEL] --> +  <xsl:if test="not(../*/bibliomisc[@role='medium'])"> +    <xsl:call-template name="iso690.secondary"/> +  </xsl:if> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.article.jour"> +<!-- Serial --> +  <!-- Title and Type of medium --> +  <xsl:call-template name="iso690.title"/> +  <!-- Edition --> +  <xsl:call-template name="iso690.edition"> +    <xsl:with-param name="after" select="./pubdate[not(@role='issuing')]|./volumenum|./issuenum|./pagenums"/> +  </xsl:call-template> +  <!-- Number designation [EL] --> +  <!-- Location within host --> +  <xsl:call-template name="iso690.article.location"/> +  <xsl:if test="./bibliomisc[@role='medium']"> +  <!-- Notes [EL] --> +    <xsl:call-template name="iso690.notice"/> +  <!-- Avaibility and access [EL] --> +    <xsl:call-template name="iso690.access"/> +  <!-- Standard number [EL] --> +    <xsl:call-template name="iso690.issn"/> +  </xsl:if> +</xsl:template> + +<!-- PATENT DOCUMENTS --> +<xsl:template name="iso690.patent"> +  <!-- Primary responsibility (applicant) --> +  <xsl:call-template name="iso690.primary"/> +  <!-- Title of the invention --> +  <xsl:call-template name="iso690.title"/> +  <!-- Subordinate responsibility --> +  <xsl:call-template name="iso690.secondary"/> +  <!-- Notes --> +  <xsl:call-template name="iso690.notice"/> +  <!-- Identification --> +  <xsl:call-template name="iso690.pat.ident"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Elements --> + +<!-- Primary responsibility --> +<xsl:template name="iso690.primary"> +  <xsl:param name="primary.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./authorgroup/author|./author"> +      <xsl:call-template name="iso690.author.list"> +        <xsl:with-param name="person.list" select=".//authorgroup/author|.//author"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="./authorgroup/editor|./editor"> +      <xsl:call-template name="iso690.author.list"> +        <xsl:with-param name="person.list" select=".//authorgroup/editor|.//editor"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="./authorgroup/corpauthor|./corpauthor"> +      <xsl:call-template name="iso690.author.list"> +        <xsl:with-param name="person.list" select=".//authorgroup/corpauthor|.//corpauthor"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:if test="(./firstname)and(./surname)"> +        <xsl:call-template name="iso690.author"/> +        <xsl:call-template name="iso690.endsep"> +          <xsl:with-param name="text" select="string(./firstname[1])"/> +          <xsl:with-param name="sep" select="$primary.sep"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.author.list"> +  <xsl:param name="person.list" +             select="author|corpauthor|editor"/> +  <xsl:param name="person.count" select="count($person.list)"/> +  <xsl:param name="count" select="1"/> +  <xsl:param name="group" select="./authorgroup[@role='many']"/> +  <xsl:param name="many" select="0"/> + +  <xsl:param name="primary.many"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.many'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="primary.editor"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.editor'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="primary.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template> +  </xsl:param> + +  <xsl:choose> +    <xsl:when test="$count > $person.count"></xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$person.count < 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 > 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 > 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 < $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 < $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>=3) and ($person.count>=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>1) and  ($person.count>1)"> +              <xsl:call-template name="iso690.author.list"> +                <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]"/> +                <xsl:with-param name="person.count" select="2"/> +                <xsl:with-param name="count" select="1"/> +                <xsl:with-param name="many" select="1"/> +                <xsl:with-param name="group"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:otherwise> +              <xsl:call-template name="iso690.author.list"> +                <xsl:with-param name="person.list" select="$person.list[1]"/> +                <xsl:with-param name="person.count" select="1"/> +                <xsl:with-param name="count" select="1"/> +                <xsl:with-param name="many" select="1"/> +                <xsl:with-param name="group"/> +              </xsl:call-template> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.author"> +  <xsl:param name="node" select="."/> +  <xsl:param name="lastfirst.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'lastfirst.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="name($node)!='corpauthor'"> +      <fo:inline text-transform="uppercase"> +        <xsl:apply-templates mode="iso690.mode" select="$node//surname[1]"/> +      </fo:inline> +      <xsl:if test="$node//surname and $node//firstname"> +        <xsl:value-of select="$lastfirst.sep"/> +      </xsl:if> +      <xsl:apply-templates mode="iso690.mode" select="$node//firstname[1]"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline text-transform="uppercase"> +        <xsl:apply-templates mode="iso690.mode" select="$node"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="corpauthor|firstname|surname" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Title and Type of medium --> +<xsl:template name="iso690.title"> +  <xsl:param name="medium" select="./bibliomisc[@role='medium']"/> +  <xsl:param name="italic" select="1"/> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template> +  </xsl:param> + +  <xsl:apply-templates mode="iso690.mode" select="./title"> +    <xsl:with-param name="medium" select="$medium"/> +    <xsl:with-param name="italic" select="$italic"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="title" mode="iso690.mode"> +  <xsl:param name="medium"/> +  <xsl:param name="italic" select="1"/> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="medium1"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium1'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="medium2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium2'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="$italic=1"> +      <xsl:call-template name="iso690.italic.title"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.make.title"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:if test="$medium"> +    <xsl:value-of select="$medium1"/> +    <xsl:apply-templates mode="iso690.mode" select="$medium"/> +    <xsl:value-of select="$medium2"/> +  </xsl:if> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="concat(string(.),string(../subtitle))"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="iso690.italic.title"> +  <fo:inline font-style="italic"> +    <xsl:call-template name="iso690.make.title"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="iso690.make.title"> +  <xsl:param name="submaintitle.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'submaintitle.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:if test="../subtitle"> +    <xsl:value-of select="$submaintitle.sep"/> +    <xsl:apply-templates mode="iso690.mode" select="../subtitle"/> +  </xsl:if> +</xsl:template> + +<xsl:template match="subtitle" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<xsl:template match="bibliomisc[@role='medium']" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Subordinate responsibility --> +<xsl:template name="iso690.secondary"> +  <xsl:param name="secondary.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="secondary.person.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.person.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:for-each select="./bibliomisc[@role='secondary']"> +    <xsl:apply-templates mode="iso690.mode" select="."/> +    <xsl:choose> +      <xsl:when test="position()=count(../bibliomisc[@role='secondary'])"> +        <xsl:call-template name="iso690.endsep"> +          <xsl:with-param name="text" select="string(.)"/> +          <xsl:with-param name="sep" select="$secondary.sep"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$secondary.person.sep"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:for-each> +</xsl:template> + +<xsl:template match="bibliomisc[@role='secondary']" mode="iso690.mode"> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Edition --> +<xsl:template name="iso690.edition"> +  <xsl:param name="after"/> +  <xsl:param name="edition.serial.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.serial.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="string($after)!=''"> +      <xsl:apply-templates mode="iso690.mode" select="./edition"> +        <xsl:with-param name="sep" select="$edition.serial.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./edition"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="edition" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<!-- Issue designation (date and/or n°) --> +<xsl:template name="iso690.issuing"> +  <xsl:param name="issuing.div"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.range"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2] and ./issuenum[2]"> +      <xsl:call-template name="iso690.issuedate"/> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum[1]"> +        <xsl:with-param name="sep" select="$issuing.range"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum[2]"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2]"> +      <xsl:call-template name="iso690.issuedate"/> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]"> +        <xsl:with-param name="sep" select="$issuing.range"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pubdate[@role='issuing'] and ./volumenum and ./issuenum"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pubdate[@role='issuing']"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./volumenum"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./issuenum"> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +        <xsl:with-param name="sep" select="$issuing.sep"/> +      </xsl:apply-templates> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.issuedate"> +  <xsl:param name="issuing.div"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.range"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="issuing.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./pubdate[@role='issuing'][2]"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][1]"> +        <xsl:with-param name="sep" select="$issuing.range"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][2]"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> +        <xsl:with-param name="sep" select="$issuing.div"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="pubdate[@role='issuing']" mode="iso690.mode"> +  <xsl:param name="sep"/> +  <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.space"> +    <xsl:with-param name="text" select="$substr"/> +  </xsl:call-template> +  <xsl:choose> +    <xsl:when test="$substr='-'"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="' '"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(.)"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- Numeration of the part --> +<xsl:template name="iso690.partnr"> +  <xsl:param name="partnr.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'partnr.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +    <xsl:with-param name="sep" select="$partnr.sep"/> +  </xsl:apply-templates> +</xsl:template> + +<!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +<xsl:template name="iso690.pub"> +  <xsl:param name="onlydate" select="0"/> +  <xsl:param name="placesep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'placepubl.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="pubsep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'publyear.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="endsep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pubinfo.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="(./publisher/publishername|./publishername|./publisher/address/city)and($onlydate=0)and(./pubdate[not(@role='issuing')]|./copyright/year|./date[@role='upd']|./date[@role='upd'])"> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city"> +        <xsl:with-param name="sep" select="$placesep"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername"> +        <xsl:with-param name="sep" select="$pubsep"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:apply-templates> +      <xsl:if test="not(./pubdate[not(@role='issuing')]|./copyright/year)"> +        <xsl:call-template name="iso690.data"> +          <xsl:with-param name="sep" select="$endsep"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:when> +    <xsl:when test="(./publisher/publishername|./publishername)and(./publisher/address/city)and($onlydate=0)"> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city"> +        <xsl:with-param name="sep" select="$placesep"/> +      </xsl:apply-templates> +      <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="($onlydate=1)or(./pubdate[not(@role='issuing')]|./copyright/year)"> +      <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:apply-templates> +      <xsl:if test="$onlydate=1"> +        <xsl:call-template name="iso690.location"> +          <xsl:with-param name="onlypages" select="1"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:when> +    <xsl:when test="not(./pubdate[not(@role='issuing')]|./copyright/year)"> +      <xsl:call-template name="iso690.data"> +        <xsl:with-param name="sep" select="$endsep"/> +      </xsl:call-template> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.paper.pub"> +  <xsl:param name="spec.pubinfo.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'spec.pubinfo.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./volumnum|./issuenum|./pagenums"> +      <xsl:call-template name="iso690.pub"> +        <xsl:with-param name="endsep" select="$spec.pubinfo.sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.pub"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.data"> +  <xsl:param name="sep"/> +  <xsl:param name="datecit2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./date[@role='upd']"> +    <xsl:with-param name="sep"/> +  </xsl:apply-templates> +  <xsl:apply-templates mode="iso690.mode" select="./date[@role='cit']"/> +  <xsl:choose> +    <xsl:when test="./date[@role='cit']"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="$datecit2"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="./date[@role='upd']"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(./date[@role='upd'])"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="publisher/address/city|publishername" mode="iso690.mode"> +  <xsl:param name="sep"/> +  <xsl:param name="upd" select="0"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="pubdate|copyright/year" mode="iso690.mode"> +  <xsl:param name="sep"/> +  <xsl:param name="upd" select="1"/> +  <xsl:param name="datecit2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> +  </xsl:param> +  <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/> +  <xsl:if test="name(.)!='pubdate'"> +    <xsl:value-of select="'©'"/><!-- copyright --> +  </xsl:if> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.space"> +    <xsl:with-param name="text" select="$substr"/> +  </xsl:call-template> +  <xsl:if test="$upd!=0"> +    <xsl:choose> +      <xsl:when test="name(.)='pubdate'"> +        <xsl:apply-templates mode="iso690.mode" select="../date[@role='upd']"/> +        <xsl:apply-templates mode="iso690.mode" select="../date[@role='cit']"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates mode="iso690.mode" select="../../date[@role='upd']"/> +        <xsl:apply-templates mode="iso690.mode" select="../../date[@role='cit']"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:if> +  <xsl:choose> +    <xsl:when test="../date[@role='cit']|../../date[@role='cit'] and $upd!=0"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="$datecit2"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="../date[@role='upd']|../../date[@role='upd'] and $upd!=0"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(../date[@role='upd'])"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$substr='-'"> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="' '"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="string(.)"/> +        <xsl:with-param name="sep" select="$sep"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.space"> +  <xsl:param name="text" select="substring(string(.),string-length(string(.)))"/> +  <xsl:if test="$text='-'"> +    <xsl:value-of select="' '"/> +  </xsl:if> +</xsl:template> + +<!-- Date of update/revision --> +<xsl:template match="date[@role='upd']" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'upd.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$sep"/> +  <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Date of citation --> +<xsl:template match="date[@role='cit']" mode="iso690.mode"> +  <xsl:param name="datecit1"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit1'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="datecit2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$datecit1"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$datecit2"/> +</xsl:template> + +<!-- Extent --> +<xsl:template name="iso690.extent"> +  <xsl:param name="extent.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'extent.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./pagenums"> +    <xsl:with-param name="sep" select="$extent.sep"/> +  </xsl:apply-templates> +</xsl:template> + +<!-- Location within host --> +<xsl:template name="iso690.part.location"> +  <xsl:param name="location.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./pagenums"> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"/> +      <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> +    </xsl:when> +    <xsl:when test="./bibliomisc[@role='sectitle']"> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.article.location"> +  <xsl:param name="location.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="locs.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="not(./date[@role='upd']|./date[@role='cit'])"> +      <xsl:choose> +        <xsl:when test="./volumenum|./issuenum|./pagenums"> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="upd" select="0"/> +            <xsl:with-param name="sep" select="$locs.sep"/> +          </xsl:apply-templates> +          <xsl:call-template name="iso690.location"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="sep" select="$location.sep"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="./volumenum|./issuenum|./pagenums"> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="upd" select="0"/> +            <xsl:with-param name="sep" select="$locs.sep"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +            <xsl:with-param name="upd" select="0"/> +            <xsl:with-param name="sep" select="$location.sep"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +      <xsl:choose> +        <xsl:when test="./issuenum"> +          <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> +          <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +            <xsl:with-param name="sep"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +            <xsl:with-param name="sep"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +      <xsl:choose> +        <xsl:when test="./pagenums"> +          <xsl:call-template name="iso690.data"> +            <xsl:with-param name="sep" select="$locs.sep"/> +          </xsl:call-template> +          <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="iso690.data"> +            <xsl:with-param name="sep" select="$location.sep"/> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.location"> +  <xsl:param name="location.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="./volumenum and not(./issuenum) and not(./pagenums)"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./issuenum and not(./pagenums)"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"> +        <xsl:with-param name="sep" select="$location.sep"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:when test="./pagenums"> +      <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> +      <xsl:apply-templates mode="iso690.mode" select="./issuenum"/> +      <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="bibliomisc[@role='secnum']|bibliomisc[@role='sectitle']" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="volumenum|issuenum" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="pagenums" mode="iso690.mode"> +  <xsl:param name="sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$sep"/> +  </xsl:call-template> +</xsl:template> + +<!-- Series --> +<xsl:template name="iso690.serie"> +  <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[@role='serie']"/> +</xsl:template> + +<!-- Notes --> +<xsl:template name="iso690.notice"> +  <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[not(@role)]"/> +</xsl:template> + +<xsl:template match="bibliomisc[not(@role)]|bibliomisc[@role='serie']" mode="iso690.mode"> +  <xsl:param name="notice.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'notice.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:call-template name="iso690.endsep"> +    <xsl:with-param name="text" select="string(.)"/> +    <xsl:with-param name="sep" select="$notice.sep"/> +  </xsl:call-template> +</xsl:template> + +<!-- Avaibility and access --> +<xsl:template name="iso690.access"> +  <xsl:for-each select="./biblioid[@class='uri']|./bibliomisc[@role='access']"> +    <xsl:choose> +      <xsl:when test="position()=1"> +        <xsl:apply-templates mode="iso690.mode" select="."/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates mode="iso690.mode" select="."> +          <xsl:with-param name="firstacc" select="0"/> +        </xsl:apply-templates> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:for-each> +</xsl:template> + +<xsl:template match="biblioid[@class='uri']/ulink|bibliomisc[@role='access']/ulink" mode="iso690.mode"> +  <xsl:param name="link1"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link1'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="link2"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link2'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$link1"/> +  <xsl:call-template name="ulink"/> +  <xsl:value-of select="$link2"/> +</xsl:template> + +<xsl:template match="biblioid[@class='uri']|bibliomisc[@role='access']" mode="iso690.mode"> +  <xsl:param name="firstacc" select="1"/> +  <xsl:param name="access"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="acctoo"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'acctoo'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="onwww"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'onwww'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="oninet"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'oninet'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="access.end"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.end'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="access.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:choose> +    <xsl:when test="$firstacc=1"> +      <xsl:value-of select="$access"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$acctoo"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:choose> +    <xsl:when test="(./ulink)and(string(./ulink)=string(.))"> +      <xsl:choose> +        <xsl:when test="(starts-with(./ulink/@url,'http://')or(starts-with(./ulink/@url,'https://')))"> +          <xsl:value-of select="$onwww"/> +          <xsl:value-of select="$access.end"/> +          <xsl:apply-templates mode="iso690.mode" select="./ulink"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:value-of select="$oninet"/> +          <xsl:value-of select="$access.end"/> +          <xsl:apply-templates mode="iso690.mode" select="./ulink"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="(./ulink)and(string(./ulink)!=string(.))"> +      <xsl:value-of select="text()[1]"/> +      <xsl:call-template name="iso690.endsep"> +        <xsl:with-param name="text" select="text()[1]"/> +        <xsl:with-param name="sep" select="$access.end"/> +      </xsl:call-template> +      <xsl:apply-templates mode="iso690.mode" select="./ulink"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:value-of select="$access.sep"/> +</xsl:template> + +<!-- Standard number - ISBN --> +<xsl:template name="iso690.isbn"> +  <xsl:choose> +    <xsl:when test="./biblioid/@class='isbn'"> +      <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='isbn']"/> +    </xsl:when> +    <xsl:when test="./isbn"> +      <xsl:apply-templates mode="iso690.mode" select="./isbn"/> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="isbn|biblioid[@class='isbn']" mode="iso690.mode"> +  <xsl:param name="isbn"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'isbn'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="stdnum.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$isbn"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$stdnum.sep"/> +</xsl:template> + +<!-- Standard number - ISSN --> +<xsl:template name="iso690.issn"> +  <xsl:choose> +    <xsl:when test="./biblioid/@class='issn'"> +      <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='issn']"/> +    </xsl:when> +    <xsl:when test="./issn"> +      <xsl:apply-templates mode="iso690.mode" select="./issn"/> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="issn|biblioid[@class='issn']" mode="iso690.mode"> +  <xsl:param name="issn"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issn'"/></xsl:call-template> +  </xsl:param> +  <xsl:param name="stdnum.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:value-of select="$issn"/> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$stdnum.sep"/> +</xsl:template> + +<!-- Identification of patent document --> +<xsl:template name="iso690.pat.ident"> +  <xsl:param name="patdate.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patdate.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode" select="./address/country"/> +  <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patenttype']"/> +  <xsl:choose> +    <xsl:when test="./biblioid[@class='other' and @otherclass='patentnum']"> +      <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='other' and @otherclass='patentnum']"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patentnum']"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> +    <xsl:with-param name="sep" select="$patdate.sep"/> +  </xsl:apply-templates> +</xsl:template> + +<!-- Country or issuing office --> +<xsl:template match="address/country" mode="iso690.mode"> +  <xsl:param name="patcountry.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patcountry.sep'"/></xsl:call-template> +  </xsl:param> +  <fo:inline font-style="italic"> +    <xsl:apply-templates mode="iso690.mode"/> +  </fo:inline> +  <xsl:value-of select="$patcountry.sep"/> +</xsl:template> + +<!-- Kind of patent document --> +<xsl:template match="bibliomisc[@role='patenttype']" mode="iso690.mode"> +  <xsl:param name="pattype.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pattype.sep'"/></xsl:call-template> +  </xsl:param> +  <fo:inline font-style="italic"> +    <xsl:apply-templates mode="iso690.mode"/> +  </fo:inline> +  <xsl:value-of select="$pattype.sep"/> +</xsl:template> + +<!-- Number --> +<xsl:template match="biblioid[@class='other' and @otherclass='patentnum']|bibliomisc[@role='patentnum']" mode="iso690.mode"> +  <xsl:param name="patnum.sep"> +    <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patnum.sep'"/></xsl:call-template> +  </xsl:param> +  <xsl:apply-templates mode="iso690.mode"/> +  <xsl:value-of select="$patnum.sep"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Supplementary templates --> + +<xsl:template name="iso690.endsep"> +  <xsl:param name="text"/> +  <xsl:param name="sep" select=". "/> +  <xsl:choose> +    <xsl:when test="substring($text,string-length($text))!=substring($sep,1,1)"> +      <xsl:value-of select="$sep"/> +    </xsl:when> +    <xsl:when test="substring($text,string-length($text))=' '"> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="' '"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="iso690.mode"> +  <xsl:apply-templates select="."/><!-- try the default mode --> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/biblio.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/biblio.xsl new file mode 100644 index 0000000..dc05208 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/biblio.xsl @@ -0,0 +1,1169 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: biblio.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="bibliography"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="not(parent::*) or parent::part or parent::book"> +      <xsl:variable name="master-reference"> +        <xsl:call-template name="select.pagemaster"/> +      </xsl:variable> + +      <fo:page-sequence hyphenate="{$hyphenate}" +                        master-reference="{$master-reference}"> +        <xsl:attribute name="language"> +          <xsl:call-template name="l10n.language"/> +        </xsl:attribute> +        <xsl:attribute name="format"> +          <xsl:call-template name="page.number.format"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="initial-page-number"> +          <xsl:call-template name="initial.page.number"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="force-page-count"> +          <xsl:call-template name="force.page.count"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="hyphenation-character"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-character'"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="hyphenation-push-character-count"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="hyphenation-remain-character-count"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +          </xsl:call-template> +        </xsl:attribute> + +        <xsl:apply-templates select="." mode="running.head.mode"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:apply-templates> +        <xsl:apply-templates select="." mode="running.foot.mode"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:apply-templates> + +        <fo:flow flow-name="xsl-region-body"> +          <xsl:call-template name="set.flow.properties"> +            <xsl:with-param name="element" select="local-name(.)"/> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> + +          <fo:block id="{$id}"> +            <xsl:call-template name="bibliography.titlepage"/> +          </fo:block> +          <xsl:apply-templates/> +        </fo:flow> +      </fo:page-sequence> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" +                space-before.minimum="1em" +                space-before.optimum="1.5em" +                space-before.maximum="2em"> +        <xsl:call-template name="bibliography.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="bibliography/bibliographyinfo"></xsl:template> +<xsl:template match="bibliography/info"></xsl:template> +<xsl:template match="bibliography/title"></xsl:template> +<xsl:template match="bibliography/subtitle"></xsl:template> +<xsl:template match="bibliography/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="bibliodiv"> +  <fo:block> +    <xsl:attribute name="id"> +      <xsl:call-template name="object.id"/> +    </xsl:attribute> +    <xsl:call-template name="bibliodiv.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="bibliodiv/title"/> +<xsl:template match="bibliodiv/subtitle"/> +<xsl:template match="bibliodiv/titleabbrev"/> + +<!-- ==================================================================== --> + +<xsl:template match="bibliolist"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}" +            space-before.minimum="1em" +            space-before.optimum="1.5em" +            space-before.maximum="2em"> + +    <xsl:if test="blockinfo/title|info/title|title"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <xsl:apply-templates select="*[not(self::blockinfo) +                                   and not(self::info) +                                   and not(self::title) +                                   and not(self::titleabbrev)]"/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="biblioentry"> +  <xsl:param name="label"> +    <xsl:call-template name="biblioentry.label"/> +  </xsl:param> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="string(.) = ''"> +      <xsl:variable name="bib" select="document($bibliography.collection,.)"/> +      <xsl:variable name="entry" select="$bib/bibliography/ +                                         *[@id=$id or @xml:id=$id][1]"/> +      <xsl:choose> +        <xsl:when test="$entry"> +          <xsl:choose> +            <xsl:when test="$bibliography.numbered != 0"> +              <xsl:apply-templates select="$entry"> +                <xsl:with-param name="label" select="$label"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="$entry"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message> +            <xsl:text>No bibliography entry: </xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text> found in </xsl:text> +            <xsl:value-of select="$bibliography.collection"/> +          </xsl:message> +          <fo:block id="{$id}" xsl:use-attribute-sets="normal.para.spacing"> +            <xsl:text>Error: no bibliography entry: </xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text> found in </xsl:text> +            <xsl:value-of select="$bibliography.collection"/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" xsl:use-attribute-sets="biblioentry.properties"> +        <xsl:copy-of select="$label"/> +	<xsl:choose> +	  <xsl:when test="$bibliography.style = 'iso690'"> +	    <xsl:call-template name="iso690.makecitation"/> +	  </xsl:when> +	  <xsl:otherwise> +	    <xsl:apply-templates mode="bibliography.mode"/> +	  </xsl:otherwise> +	</xsl:choose> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="bibliomixed"> +  <xsl:param name="label"> +    <xsl:call-template name="biblioentry.label"/> +  </xsl:param> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="string(.) = ''"> +      <xsl:variable name="bib" select="document($bibliography.collection,.)"/> +      <xsl:variable name="entry" select="$bib/bibliography/ +                                         *[@id=$id or @xml:id=$id][1]"/> +      <xsl:choose> +        <xsl:when test="$entry"> +          <xsl:choose> +            <xsl:when test="$bibliography.numbered != 0"> +              <xsl:apply-templates select="$entry"> +                <xsl:with-param name="label" select="$label"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="$entry"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message> +            <xsl:text>No bibliography entry: </xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text> found in </xsl:text> +            <xsl:value-of select="$bibliography.collection"/> +          </xsl:message> +          <fo:block id="{$id}" xsl:use-attribute-sets="normal.para.spacing"> +            <xsl:text>Error: no bibliography entry: </xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text> found in </xsl:text> +            <xsl:value-of select="$bibliography.collection"/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" xsl:use-attribute-sets="biblioentry.properties"> +        <xsl:copy-of select="$label"/> +        <xsl:apply-templates mode="bibliomixed.mode"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="biblioentry.label"> +  <xsl:param name="node" select="."/> + +  <xsl:choose> +    <xsl:when test="$bibliography.numbered != 0"> +      <xsl:text>[</xsl:text> +      <xsl:number from="bibliography" count="biblioentry|bibliomixed" +                  level="any" format="1"/> +      <xsl:text>] </xsl:text> +    </xsl:when> +    <xsl:when test="local-name($node/child::*[1]) = 'abbrev'"> +      <xsl:text>[</xsl:text> +      <xsl:apply-templates select="$node/abbrev[1]"/> +      <xsl:text>] </xsl:text> +    </xsl:when> +    <xsl:when test="$node/@xreflabel"> +      <xsl:text>[</xsl:text> +      <xsl:value-of select="$node/@xreflabel"/> +      <xsl:text>] </xsl:text> +    </xsl:when> +    <xsl:when test="$node/@id or $node/@xml:id"> +      <xsl:text>[</xsl:text> +      <xsl:value-of select="($node/@id|$node/@xml:id)[1]"/> +      <xsl:text>] </xsl:text> +    </xsl:when> +    <xsl:otherwise><!-- nop --></xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="bibliography.mode"> +  <xsl:apply-templates select="."/><!-- try the default mode --> +</xsl:template> + +<xsl:template match="abbrev" mode="bibliography.mode"> +  <xsl:if test="preceding-sibling::*"> +    <fo:inline> +      <xsl:apply-templates mode="bibliography.mode"/> +    </fo:inline> +  </xsl:if> +</xsl:template> + +<xsl:template match="abstract" mode="bibliography.mode"> +  <!-- suppressed --> +</xsl:template> + +<xsl:template match="address" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="affiliation" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="shortaffil" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="jobtitle" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="artheader|articleinfo|article/info"  +              mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="artpagenums" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="author" mode="bibliography.mode"> +  <fo:inline> +    <xsl:call-template name="person.name"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorblurb|personblurb" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorgroup" mode="bibliography.mode"> +  <fo:inline> +    <xsl:call-template name="person.name.list"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorinitials" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliomisc" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliomset" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="biblioset" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="biblioset/title|biblioset/citetitle"  +              mode="bibliography.mode"> +  <xsl:variable name="relation" select="../@relation"/> +  <xsl:choose> +    <xsl:when test="$relation='article' or @pubwork='article'"> +      <xsl:call-template name="gentext.startquote"/> +      <xsl:apply-templates mode="bibliography.mode"/> +      <xsl:call-template name="gentext.endquote"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline font-style="italic"> +        <xsl:apply-templates/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:value-of select="$biblioentry.item.separator"/> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="bookbiblio" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="citetitle" mode="bibliography.mode"> +  <fo:inline> +    <xsl:choose> +      <xsl:when test="@pubwork = 'article'"> +        <xsl:call-template name="gentext.startquote"/> +        <xsl:apply-templates mode="bibliography.mode"/> +        <xsl:call-template name="gentext.endquote"/> +      </xsl:when> +      <xsl:otherwise> +        <fo:inline font-style="italic"> +          <xsl:apply-templates mode="bibliography.mode"/> +        </fo:inline> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="collab" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="confgroup" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contractnum" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contractsponsor" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contrib" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="copyright" mode="bibliography.mode"> +  <fo:inline> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'Copyright'"/> +    </xsl:call-template> +    <xsl:call-template name="gentext.space"/> +    <xsl:call-template name="dingbat"> +      <xsl:with-param name="dingbat">copyright</xsl:with-param> +    </xsl:call-template> +    <xsl:call-template name="gentext.space"/> +    <xsl:apply-templates select="year" mode="bibliography.mode"/> +    <xsl:if test="holder"> +      <xsl:call-template name="gentext.space"/> +      <xsl:apply-templates select="holder" mode="bibliography.mode"/> +    </xsl:if> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="year" mode="bibliography.mode"> +  <xsl:apply-templates/><xsl:text>, </xsl:text> +</xsl:template> + +<xsl:template match="year[position()=last()]" mode="bibliography.mode"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="holder" mode="bibliography.mode"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="corpauthor" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="corpcredit" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="corpname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="date" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="edition" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="editor" mode="bibliography.mode"> +  <fo:inline> +    <xsl:call-template name="person.name"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="firstname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="honorific" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="indexterm" mode="bibliography.mode"> +  <xsl:apply-templates select="."/>  +</xsl:template> + +<xsl:template match="invpartnumber" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="isbn" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="issn" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="issuenum" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="lineage" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="orgname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="othercredit" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="othername" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pagenums" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="printhistory" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="productname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="productnumber" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pubdate" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="publisher" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="publishername" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pubsnumber" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="releaseinfo" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="revhistory" mode="bibliography.mode"> +  <fo:block> +    <xsl:apply-templates select="."/> <!-- use normal mode --> +  </fo:block> +</xsl:template> + +<xsl:template match="seriesinfo" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="seriesvolnums" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="surname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="title" mode="bibliography.mode"> +  <fo:inline> +    <fo:inline font-style="italic"> +      <xsl:apply-templates mode="bibliography.mode"/> +    </fo:inline> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="titleabbrev" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="volumenum" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="orgdiv" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="collabname" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="confdates" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="conftitle" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="confnum" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="confsponsor" mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource" +              mode="bibliography.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +    <xsl:value-of select="$biblioentry.item.separator"/> +  </fo:inline> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="bibliomixed.mode"> +  <xsl:apply-templates select="."/><!-- try the default mode --> +</xsl:template> + +<xsl:template match="abbrev" mode="bibliomixed.mode"> +  <xsl:if test="preceding-sibling::*"> +    <fo:inline> +      <xsl:apply-templates mode="bibliomixed.mode"/> +    </fo:inline> +  </xsl:if> +</xsl:template> + +<xsl:template match="abstract" mode="bibliomixed.mode"> +  <fo:block start-indent="1in"> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="para" mode="bibliomixed.mode"> +  <fo:block> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="address" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="affiliation" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="shortaffil" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="jobtitle" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliography.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="artpagenums" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="author" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:call-template name="person.name"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorblurb|personblurb" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorgroup" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="authorinitials" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliomisc" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="bibliomset" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliomset/title|bibliomset/citetitle"  +              mode="bibliomixed.mode"> +  <xsl:variable name="relation" select="../@relation"/> +  <xsl:choose> +    <xsl:when test="$relation='article' or @pubwork='article'"> +      <xsl:call-template name="gentext.startquote"/> +      <xsl:apply-templates mode="bibliomixed.mode"/> +      <xsl:call-template name="gentext.endquote"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline font-style="italic"> +        <xsl:apply-templates/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="biblioset" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="citetitle" mode="bibliomixed.mode"> +  <xsl:choose> +    <xsl:when test="@pubwork = 'article'"> +      <xsl:call-template name="gentext.startquote"/> +      <xsl:apply-templates mode="bibliomixed.mode"/> +      <xsl:call-template name="gentext.endquote"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline font-style="italic"> +        <xsl:apply-templates mode="bibliography.mode"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="collab" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="confgroup" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contractnum" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contractsponsor" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="contrib" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="copyright" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="corpauthor" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="corpcredit" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="corpname" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="date" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="edition" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="editor" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="firstname" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="honorific" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="indexterm" mode="bibliomixed.mode"> +  <xsl:apply-templates select="."/>  +</xsl:template> + +<xsl:template match="invpartnumber" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="isbn" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="issn" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="issuenum" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="lineage" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="orgname" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="othercredit" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="othername" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pagenums" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="printhistory" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="productname" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="productnumber" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pubdate" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="publisher" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="publishername" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="pubsnumber" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="releaseinfo" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="revhistory" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="seriesvolnums" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="surname" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="title" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="titleabbrev" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="volumenum" mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource" +              mode="bibliomixed.mode"> +  <fo:inline> +    <xsl:apply-templates mode="bibliomixed.mode"/> +  </fo:inline> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/block.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/block.xsl new file mode 100644 index 0000000..c2586b7 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/block.xsl @@ -0,0 +1,600 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: block.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This 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"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="para"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="simpara"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="formalpara"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- Only use title from info --> +<xsl:template match="formalpara/info"> +  <xsl:apply-templates select="title"/> +</xsl:template> + +<xsl:template match="formalpara/title|formalpara/info/title"> +  <xsl:variable name="titleStr"> +      <xsl:apply-templates/> +  </xsl:variable> +  <xsl:variable name="lastChar"> +    <xsl:if test="$titleStr != ''"> +      <xsl:value-of select="substring($titleStr,string-length($titleStr),1)"/> +    </xsl:if> +  </xsl:variable> + +  <fo:inline font-weight="bold" +             keep-with-next.within-line="always" +             padding-end="1em"> +    <xsl:copy-of select="$titleStr"/> +    <xsl:if test="$lastChar != '' +                  and not(contains($runinhead.title.end.punct, $lastChar))"> +      <xsl:value-of select="$runinhead.default.title.end.punct"/> +    </xsl:if> +    <xsl:text> </xsl:text> +  </fo:inline> +</xsl:template> + +<xsl:template match="formalpara/para"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="blockquote"> +  <fo:block xsl:use-attribute-sets="blockquote.properties"> +    <xsl:call-template name="anchor"/> +    <fo:block> +      <xsl:if test="title|info/title"> +        <fo:block xsl:use-attribute-sets="formal.title.properties"> +          <xsl:apply-templates select="." mode="object.title.markup"/> +        </fo:block> +      </xsl:if> +      <xsl:apply-templates select="*[local-name(.) != 'title' +                                   and local-name(.) != 'attribution']"/> +    </fo:block> +    <xsl:if test="attribution"> +      <fo:block text-align="right"> +        <!-- mdash --> +        <xsl:text>—</xsl:text> +        <xsl:apply-templates select="attribution"/> +      </fo:block> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="epigraph"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates select="para|simpara|formalpara|literallayout"/> +    <xsl:if test="attribution"> +      <fo:inline> +        <xsl:text>--</xsl:text> +        <xsl:apply-templates select="attribution"/> +      </fo:inline> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="attribution"> +  <fo:inline><xsl:apply-templates/></fo:inline> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="floater"> +  <xsl:param name="position" select="'none'"/> +  <xsl:param name="clear" select="'both'"/> +  <xsl:param name="width"/> +  <xsl:param name="content"/> +  <xsl:param name="start.indent">0pt</xsl:param> +  <xsl:param name="end.indent">0pt</xsl:param> + +  <xsl:choose> +    <xsl:when test="not($fop.extensions = 0)"> +      <!-- fop 0.20.5 does not support floats --> +      <xsl:copy-of select="$content"/> +    </xsl:when> +    <xsl:when test="$position = 'none'"> +      <xsl:copy-of select="$content"/> +    </xsl:when> +    <xsl:when test="$position = 'before'"> +      <fo:float float="before"> +        <xsl:copy-of select="$content"/> +      </fo:float> +    </xsl:when> +    <xsl:when test="$position = 'left' or +                    $position = 'start' or +                    $position = 'right' or +                    $position = 'end' or +                    $position = 'inside' or +                    $position = 'outside'"> +      <xsl:variable name="float"> +        <fo:float float="{$position}" +                  clear="{$clear}"> +          <fo:block-container  +                    start-indent="{$start.indent}" +                    end-indent="{$end.indent}"> +            <xsl:if test="$width != ''"> +              <xsl:attribute name="inline-progression-dimension"> +                <xsl:value-of select="$width"/> +              </xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:copy-of select="$content"/> +            </fo:block> +          </fo:block-container> +        </fo:float> +      </xsl:variable> +      <xsl:choose> +        <xsl:when test="$axf.extensions != 0 and self::sidebar"> +          <fo:block xsl:use-attribute-sets="normal.para.spacing" +                    space-after="0pt" +                    space-after.precedence="force" +                    start-indent="0pt" end-indent="0pt"> +            <xsl:copy-of select="$float"/> +          </fo:block> +        </xsl:when> +        <xsl:when test="$axf.extensions != 0 and  +                        ($position = 'left' or $position = 'start')"> +          <fo:float float="{$position}" +                    clear="{$clear}"> +            <fo:block-container  +                      inline-progression-dimension=".001mm" +                      end-indent="{$start.indent} + {$width} + {$end.indent}"> +              <xsl:attribute name="start-indent"> +                <xsl:choose> +                  <xsl:when test="ancestor::para"> +                    <!-- Special case for handling inline floats +                         in Antenna House--> +                    <xsl:value-of select="concat('-', $body.start.indent)"/> +                  </xsl:when> +                  <xsl:otherwise>0pt</xsl:otherwise> +                </xsl:choose> +              </xsl:attribute> +              <fo:block start-indent="{$start.indent}" +                        end-indent="-{$start.indent} - {$width}"> +                <xsl:copy-of select="$content"/> +              </fo:block> +            </fo:block-container> +          </fo:float> + +        </xsl:when> +        <xsl:when test="$axf.extensions != 0 and  +                        ($position = 'right' or $position = 'end')"> +          <!-- Special case for handling inline floats in Antenna House--> +          <fo:float float="{$position}" +                    clear="{$clear}"> +            <fo:block-container  +                      inline-progression-dimension=".001mm" +                      end-indent="-{$body.end.indent}" +                      start-indent="{$start.indent} + {$width} + {$end.indent}"> +              <fo:block end-indent="{$end.indent}" +                        start-indent="-{$end.indent} - {$width}"> +                <xsl:copy-of select="$content"/> +              </fo:block> +            </fo:block-container> +          </fo:float> + +        </xsl:when> +        <xsl:when test="$xep.extensions != 0 and self::sidebar"> +          <!-- float needs some space above  to line up with following para --> +          <fo:block xsl:use-attribute-sets="normal.para.spacing"> +            <xsl:copy-of select="$float"/> +          </fo:block> +        </xsl:when> +        <xsl:when test="$xep.extensions != 0"> +          <xsl:copy-of select="$float"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:copy-of select="$float"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$content"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="sidebar" name="sidebar"> +  <!-- Also does margin notes --> +  <xsl:variable name="pi-type"> +    <xsl:call-template name="pi.dbfo_float-type"/> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$pi-type = 'margin.note'"> +      <xsl:call-template name="margin.note"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="content"> +        <fo:block xsl:use-attribute-sets="sidebar.properties" +                  id="{$id}"> +          <xsl:call-template name="sidebar.titlepage"/> +          <xsl:apply-templates select="node()[not(self::title) and +                                         not(self::info) and +                                         not(self::sidebarinfo)]"/> +        </fo:block> +      </xsl:variable> + +      <xsl:variable name="pi-width"> +        <xsl:call-template name="pi.dbfo_sidebar-width"/> +      </xsl:variable> + +      <xsl:variable name="position"> +        <xsl:choose> +          <xsl:when test="$pi-type != ''"> +            <xsl:value-of select="$pi-type"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$sidebar.float.type"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> +     +      <xsl:call-template name="floater"> +        <xsl:with-param name="content" select="$content"/> +        <xsl:with-param name="position" select="$position"/> +        <xsl:with-param name="width"> +          <xsl:choose> +            <xsl:when test="$pi-width != ''"> +              <xsl:value-of select="$pi-width"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:value-of select="$sidebar.float.width"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +        <xsl:with-param name="start.indent"> +          <xsl:choose> +            <xsl:when test="$position = 'start' or  +                            $position = 'left'">0pt</xsl:when> +            <xsl:when test="$position = 'end' or  +                            $position = 'right'">0.5em</xsl:when> +            <xsl:otherwise>0pt</xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +        <xsl:with-param name="end.indent"> +          <xsl:choose> +            <xsl:when test="$position = 'start' or  +                            $position = 'left'">0.5em</xsl:when> +            <xsl:when test="$position = 'end' or  +                            $position = 'right'">0pt</xsl:when> +            <xsl:otherwise>0pt</xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<xsl:template match="sidebar/title|sidebarinfo|sidebar/info"/> + +<xsl:template match="sidebar/title|sidebarinfo/title|sidebar/info/title" +              mode="titlepage.mode" priority="1"> +  <fo:block xsl:use-attribute-sets="sidebar.title.properties"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template name="margin.note"> +  <xsl:param name="content"> +    <fo:block xsl:use-attribute-sets="margin.note.properties"> +      <xsl:if test="./title"> +        <fo:block xsl:use-attribute-sets="margin.note.title.properties"> +          <xsl:apply-templates select="./title" mode="margin.note.title.mode"/> +        </fo:block> +      </xsl:if> +      <xsl:apply-templates/> +    </fo:block> +  </xsl:param> + +  <xsl:variable name="pi-width"> +    <xsl:call-template name="pi.dbfo_sidebar-width"/> +  </xsl:variable> + +  <xsl:variable name="position" select="$margin.note.float.type"/> + +  <xsl:call-template name="floater"> +    <xsl:with-param name="content" select="$content"/> +    <xsl:with-param name="position" select="$position"/> +    <xsl:with-param name="width" > +      <xsl:choose> +        <xsl:when test="$pi-width != ''"> +          <xsl:value-of select="$pi-width"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:value-of select="$margin.note.width"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:with-param> +    <xsl:with-param name="start.indent"> +      <xsl:choose> +        <xsl:when test="$position = 'start' or  +                        $position = 'left'">0pt</xsl:when> +        <xsl:when test="$position = 'end' or  +                        $position = 'right'">0.5em</xsl:when> +        <xsl:otherwise>0pt</xsl:otherwise> +      </xsl:choose> +    </xsl:with-param> +    <xsl:with-param name="end.indent"> +      <xsl:choose> +        <xsl:when test="$position = 'start' or  +                        $position = 'left'">0.5em</xsl:when> +        <xsl:when test="$position = 'end' or  +                        $position = 'right'">0pt</xsl:when> +        <xsl:otherwise>0pt</xsl:otherwise> +      </xsl:choose> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="sidebar/title" mode="margin.note.title.mode"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="abstract"> +  <fo:block xsl:use-attribute-sets="abstract.properties"> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="abstract/title|abstract/info/title"> +  <fo:block xsl:use-attribute-sets="abstract.title.properties"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="msgset"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgentry"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="simplemsgentry"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msg"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msgmain"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgsub"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgrel"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgtext"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msginfo"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msglevel"> +  <fo:block> +    <fo:inline font-weight="bold" +               keep-with-next.within-line="always"> +      <xsl:call-template name="gentext.template"> +        <xsl:with-param name="context" select="'msgset'"/> +        <xsl:with-param name="name" select="'MsgLevel'"/> +      </xsl:call-template> +    </fo:inline> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="msgorig"> +  <fo:block> +    <fo:inline font-weight="bold" +               keep-with-next.within-line="always"> +      <xsl:call-template name="gentext.template"> +        <xsl:with-param name="context" select="'msgset'"/> +        <xsl:with-param name="name" select="'MsgOrig'"/> +      </xsl:call-template> +    </fo:inline> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="msgaud"> +  <fo:block> +    <fo:inline font-weight="bold" +               keep-with-next.within-line="always"> +      <xsl:call-template name="gentext.template"> +        <xsl:with-param name="context" select="'msgset'"/> +        <xsl:with-param name="name" select="'MsgAud'"/> +      </xsl:call-template> +    </fo:inline> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="msgexplan"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msgexplan/title"> +  <fo:block font-weight="bold" +            keep-with-next.within-column="always" +            hyphenate="false"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> +<!-- For better or worse, revhistory is allowed in content... --> + +<xsl:template match="revhistory"> +  <fo:table table-layout="fixed" xsl:use-attribute-sets="revhistory.table.properties"> +    <xsl:call-template name="anchor"/> +    <fo:table-column column-number="1" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="2" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="3" column-width="proportional-column-width(1)"/> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <fo:table-row> +        <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties"> +          <fo:block xsl:use-attribute-sets="revhistory.title.properties"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'RevHistory'"/> +            </xsl:call-template> +          </fo:block> +        </fo:table-cell> +      </fo:table-row> +      <xsl:apply-templates/> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template match="revhistory/revision"> +  <xsl:variable name="revnumber" select="revnumber"/> +  <xsl:variable name="revdate"   select="date"/> +  <xsl:variable name="revauthor" select="authorinitials|author"/> +  <xsl:variable name="revremark" select="revremark|revdescription"/> +  <fo:table-row> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:call-template name="anchor"/> +        <xsl:if test="$revnumber"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'Revision'"/> +          </xsl:call-template> +          <xsl:call-template name="gentext.space"/> +          <xsl:apply-templates select="$revnumber[1]"/> +        </xsl:if> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:apply-templates select="$revdate[1]"/> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:for-each select="$revauthor"> +          <xsl:apply-templates select="."/> +          <xsl:if test="position() != last()"> +            <xsl:text>, </xsl:text> +          </xsl:if> +        </xsl:for-each> +      </fo:block> +    </fo:table-cell> +  </fo:table-row> +  <xsl:if test="$revremark"> +    <fo:table-row> +      <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties"> +        <fo:block> +          <xsl:apply-templates select="$revremark[1]"/> +        </fo:block> +      </fo:table-cell> +    </fo:table-row> +  </xsl:if> +</xsl:template> + +<xsl:template match="revision/revnumber"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/date"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/authorinitials"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/author"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/revremark"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/revdescription"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="ackno"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="highlights"> +  <xsl:call-template name="block.object"/> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/callout.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/callout.xsl new file mode 100644 index 0000000..420e05c --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/callout.xsl @@ -0,0 +1,231 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" +                xmlns:xverb="com.nwalsh.xalan.Verbatim" +                xmlns:lxslt="http://xml.apache.org/xslt" +                exclude-result-prefixes="sverb xverb lxslt" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: callout.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<lxslt:component prefix="xverb" +                 functions="insertCallouts"/> + +<xsl:template match="programlistingco|screenco"> +  <xsl:variable name="verbatim" select="programlisting|screen"/> +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> + +  <xsl:choose> +    <xsl:when test="$use.extensions != '0' +                    and $callouts.extension != '0'"> +      <xsl:variable name="rtf"> +        <xsl:apply-templates select="$verbatim"> +          <xsl:with-param name="suppress-numbers" select="'1'"/> +        </xsl:apply-templates> +      </xsl:variable> + +      <xsl:variable name="rtf-with-callouts"> +        <xsl:choose> +          <xsl:when test="contains($vendor, 'SAXON ')"> +            <xsl:copy-of select="sverb:insertCallouts(areaspec,$rtf)"/> +          </xsl:when> +          <xsl:when test="contains($vendor, 'Apache Software Foundation')"> +            <xsl:copy-of select="xverb:insertCallouts(areaspec,$rtf)"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:message terminate="yes"> +              <xsl:text>Don't know how to do callouts with </xsl:text> +              <xsl:value-of select="$vendor"/> +            </xsl:message> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$verbatim/@linenumbering = 'numbered' +                        and $linenumbering.extension != '0'"> +          <xsl:call-template name="number.rtf.lines"> +            <xsl:with-param name="rtf" select="$rtf-with-callouts"/> +            <xsl:with-param name="pi.context" +                            select="programlisting|screen"/> +          </xsl:call-template> +          <xsl:apply-templates select="calloutlist"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:copy-of select="$rtf-with-callouts"/> +          <xsl:apply-templates select="calloutlist"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="areaspec|areaset|area"> +</xsl:template> + +<xsl:template match="areaset" mode="conumber"> +  <xsl:number count="area|areaset" format="1"/> +</xsl:template> + +<xsl:template match="area" mode="conumber"> +  <xsl:number count="area|areaset" format="1"/> +</xsl:template> + +<xsl:template match="co"> +  <fo:inline> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates select="." mode="callout-bug"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="coref"> +  <!-- tricky; this relies on the fact that we can process the "co" that's --> +  <!-- "over there" as if it were "right here" --> + +  <xsl:variable name="co" select="key('id', @linkend)"/> +  <xsl:choose> +    <xsl:when test="not($co)"> +      <xsl:message> +        <xsl:text>Error: coref link is broken: </xsl:text> +        <xsl:value-of select="@linkend"/> +      </xsl:message> +    </xsl:when> +    <xsl:when test="local-name($co) != 'co'"> +      <xsl:message> +        <xsl:text>Error: coref doesn't point to a co: </xsl:text> +        <xsl:value-of select="@linkend"/> +      </xsl:message> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline> +        <xsl:call-template name="anchor"/> +        <xsl:apply-templates select="$co" mode="callout-bug"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="co" mode="callout-bug"> +  <xsl:call-template name="callout-bug"> +    <xsl:with-param name="conum"> +      <xsl:number count="co" +                  level="any" +                  from="programlisting|screen|literallayout|synopsis" +                  format="1"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="callout-bug"> +  <xsl:param name="conum" select='1'/> + +  <xsl:choose> +    <!-- Draw callouts as images --> +    <xsl:when test="$callout.graphics != '0' +                    and $conum <= $callout.graphics.number.limit"> +      <xsl:variable name="filename" +                    select="concat($callout.graphics.path, $conum, +		                   $callout.graphics.extension)"/> + +      <fo:external-graphic content-width="{$callout.icon.size}" +                           width="{$callout.icon.size}"> +        <xsl:attribute name="src"> +          <xsl:choose> +            <xsl:when test="$passivetex.extensions != 0 +                            or $fop.extensions != 0 +                            or $arbortext.extensions != 0"> +              <xsl:value-of select="$filename"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:text>url(</xsl:text> +              <xsl:value-of select="$filename"/> +              <xsl:text>)</xsl:text> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:attribute> +      </fo:external-graphic> +    </xsl:when> + +    <xsl:when test="$callout.unicode != 0 +                    and $conum <= $callout.unicode.number.limit"> +      <xsl:variable name="comarkup"> +        <xsl:choose> +          <xsl:when test="$callout.unicode.start.character = 10102"> +            <xsl:choose> +              <xsl:when test="$conum = 1">❶</xsl:when> +              <xsl:when test="$conum = 2">❷</xsl:when> +              <xsl:when test="$conum = 3">❸</xsl:when> +              <xsl:when test="$conum = 4">❹</xsl:when> +              <xsl:when test="$conum = 5">❺</xsl:when> +              <xsl:when test="$conum = 6">❻</xsl:when> +              <xsl:when test="$conum = 7">❼</xsl:when> +              <xsl:when test="$conum = 8">❽</xsl:when> +              <xsl:when test="$conum = 9">❾</xsl:when> +              <xsl:when test="$conum = 10">❿</xsl:when> +            </xsl:choose> +          </xsl:when> +          <xsl:otherwise> +            <xsl:message> +              <xsl:text>Don't know how to generate Unicode callouts </xsl:text> +              <xsl:text>when $callout.unicode.start.character is </xsl:text> +              <xsl:value-of select="$callout.unicode.start.character"/> +            </xsl:message> +            <fo:inline background-color="#404040" +                       color="white" +                       padding-top="0.1em" +                       padding-bottom="0.1em" +                       padding-start="0.2em" +                       padding-end="0.2em" +                       baseline-shift="0.1em" +                       font-family="{$body.fontset}" +                       font-weight="bold" +                       font-size="75%"> +              <xsl:value-of select="$conum"/> +            </fo:inline> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$callout.unicode.font != ''"> +          <fo:inline font-family="{$callout.unicode.font}"> +            <xsl:copy-of select="$comarkup"/> +          </fo:inline> +        </xsl:when> +        <xsl:otherwise> +          <xsl:copy-of select="$comarkup"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <!-- Most safe: draw a dark gray square with a white number inside --> +    <xsl:otherwise> +      <fo:inline background-color="#404040" +                 color="white" +                 padding-top="0.1em" +                 padding-bottom="0.1em" +                 padding-start="0.2em" +                 padding-end="0.2em" +                 baseline-shift="0.1em" +                 font-family="{$body.fontset}" +                 font-weight="bold" +                 font-size="75%"> +        <xsl:value-of select="$conum"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/component.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/component.xsl new file mode 100644 index 0000000..8a96026 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/component.xsl @@ -0,0 +1,797 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: component.xsl 8228 2007-07-21 15:00:15Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + + +<xsl:template name="component.title"> +  <xsl:param name="node" select="."/> +  <xsl:param name="pagewide" select="0"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$node"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="title"> +    <xsl:apply-templates select="$node" mode="object.title.markup"> +      <xsl:with-param name="allow-anchors" select="1"/> +    </xsl:apply-templates> +  </xsl:variable> + +  <xsl:variable name="titleabbrev"> +    <xsl:apply-templates select="$node" mode="titleabbrev.markup"/> +  </xsl:variable> + +  <xsl:variable name="level"> +    <xsl:choose> +      <xsl:when test="ancestor::section"> +        <xsl:value-of select="count(ancestor::section)+1"/> +      </xsl:when> +      <xsl:when test="ancestor::sect5">6</xsl:when> +      <xsl:when test="ancestor::sect4">5</xsl:when> +      <xsl:when test="ancestor::sect3">4</xsl:when> +      <xsl:when test="ancestor::sect2">3</xsl:when> +      <xsl:when test="ancestor::sect1">2</xsl:when> +      <xsl:otherwise>1</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="$passivetex.extensions != 0"> +    <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex" +                    fotex-bookmark-level="2" +                    fotex-bookmark-label="{$id}"> +      <xsl:value-of select="$titleabbrev"/> +    </fotex:bookmark> +  </xsl:if> + +  <fo:block xsl:use-attribute-sets="component.title.properties"> +    <xsl:if test="$pagewide != 0"> +      <!-- Doesn't work to use 'all' here since not a child of fo:flow --> +      <xsl:attribute name="span">inherit</xsl:attribute> +    </xsl:if> +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:outline-level"> +        <xsl:value-of select="count($node/ancestor::*)"/> +      </xsl:attribute> +      <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +      <xsl:attribute name="axf:outline-title"> +        <xsl:value-of select="normalize-space($title)"/> +      </xsl:attribute> +    </xsl:if> + +    <!-- Let's handle the case where a component (bibliography, for example) +         occurs inside a section; will we need parameters for this? +         Danger Will Robinson: using section.title.level*.properties here +         runs the risk that someone will set something other than +         font-size there... --> +    <xsl:choose> +      <xsl:when test="$level=2"> +        <fo:block xsl:use-attribute-sets="section.title.level2.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=3"> +        <fo:block xsl:use-attribute-sets="section.title.level3.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=4"> +        <fo:block xsl:use-attribute-sets="section.title.level4.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=5"> +        <fo:block xsl:use-attribute-sets="section.title.level5.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=6"> +        <fo:block xsl:use-attribute-sets="section.title.level6.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <!-- not in a section: do nothing special --> +        <xsl:copy-of select="$title"/> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="dedication" mode="dedication"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="dedication.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="dedication"></xsl:template> <!-- see mode="dedication" --> +<xsl:template match="dedication/docinfo"></xsl:template> +<xsl:template match="dedication/title"></xsl:template> +<xsl:template match="dedication/subtitle"></xsl:template> +<xsl:template match="dedication/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="colophon"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="colophon.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="colophon/title"></xsl:template> +<xsl:template match="colophon/subtitle"></xsl:template> +<xsl:template match="colophon/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="preface"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="preface.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table"  +                          select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:if test="contains($toc.params, 'toc')"> +        <xsl:call-template name="component.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="component.toc.separator"/> +      </xsl:if> + +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="preface/docinfo|prefaceinfo"></xsl:template> +<xsl:template match="preface/info"></xsl:template> +<xsl:template match="preface/title"></xsl:template> +<xsl:template match="preface/titleabbrev"></xsl:template> +<xsl:template match="preface/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="chapter"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="chapter.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:if test="contains($toc.params, 'toc')"> +        <xsl:call-template name="component.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="component.toc.separator"/> +      </xsl:if> +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="chapter/docinfo|chapterinfo"></xsl:template> +<xsl:template match="chapter/info"></xsl:template> +<xsl:template match="chapter/title"></xsl:template> +<xsl:template match="chapter/titleabbrev"></xsl:template> +<xsl:template match="chapter/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="appendix"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="appendix.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc')"> +        <xsl:call-template name="component.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="component.toc.separator"/> +      </xsl:if> +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="appendix/docinfo|appendixinfo"></xsl:template> +<xsl:template match="appendix/info"></xsl:template> +<xsl:template match="appendix/title"></xsl:template> +<xsl:template match="appendix/titleabbrev"></xsl:template> +<xsl:template match="appendix/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="article"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}" +                xsl:use-attribute-sets="component.titlepage.properties"> +        <xsl:call-template name="article.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc')"> +        <xsl:call-template name="component.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="component.toc.separator"/> +      </xsl:if> +      <xsl:apply-templates/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="article/artheader"></xsl:template> +<xsl:template match="article/articleinfo"></xsl:template> +<xsl:template match="article/info"></xsl:template> +<xsl:template match="article/title"></xsl:template> +<xsl:template match="article/subtitle"></xsl:template> +<xsl:template match="article/titleabbrev"></xsl:template> + +<xsl:template match="article/appendix"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="title"> +    <xsl:apply-templates select="." mode="object.title.markup"/> +  </xsl:variable> + +  <xsl:variable name="titleabbrev"> +    <xsl:apply-templates select="." mode="titleabbrev.markup"/> +  </xsl:variable> + +  <fo:block id='{$id}'> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:outline-level"> +        <xsl:value-of select="count(ancestor::*)+2"/> +      </xsl:attribute> +      <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +      <xsl:attribute name="axf:outline-title"> +        <xsl:value-of select="normalize-space($titleabbrev)"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:if test="$passivetex.extensions != 0"> +      <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"  +                      fotex-bookmark-level="{count(ancestor::*)+2}"  +                      fotex-bookmark-label="{$id}"> +        <xsl:value-of select="$titleabbrev"/> +      </fotex:bookmark> +    </xsl:if> + +    <fo:block xsl:use-attribute-sets="article.appendix.title.properties"> +      <fo:marker marker-class-name="section.head.marker"> +        <xsl:choose> +          <xsl:when test="$titleabbrev = ''"> +            <xsl:value-of select="$title"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$titleabbrev"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:marker> +      <xsl:copy-of select="$title"/> +    </fo:block> + +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- Utility template to create a page sequence for an element --> +<xsl:template match="*" mode="page.sequence" name="page.sequence"> +  <xsl:param name="content"> +    <xsl:apply-templates/> +  </xsl:param> +  <xsl:param name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:param> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="gentext-key" select="local-name(.)"/> +  <xsl:param name="language"> +    <xsl:call-template name="l10n.language"/> +  </xsl:param> + +  <xsl:param name="format"> +    <xsl:call-template name="page.number.format"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +      <xsl:with-param name="element" select="$element"/> +    </xsl:call-template> +  </xsl:param> + +  <xsl:param name="initial-page-number"> +    <xsl:call-template name="initial.page.number"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +      <xsl:with-param name="element" select="$element"/> +    </xsl:call-template> +  </xsl:param> + +  <xsl:param name="force-page-count"> +    <xsl:call-template name="force.page.count"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +      <xsl:with-param name="element" select="$element"/> +    </xsl:call-template> +  </xsl:param> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:value-of select="$language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:value-of select="$format"/> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:value-of select="$initial-page-number"/> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:value-of select="$force-page-count"/> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +      <xsl:with-param name="gentext-key" select="$gentext-key"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +      <xsl:with-param name="gentext-key" select="$gentext-key"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <xsl:copy-of select="$content"/> + +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/division.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/division.xsl new file mode 100644 index 0000000..aea82ca --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/division.xsl @@ -0,0 +1,611 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: division.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template name="division.title"> +  <xsl:param name="node" select="."/> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$node"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:variable name="title"> +    <xsl:apply-templates select="$node" mode="object.title.markup"/> +  </xsl:variable> + +  <xsl:if test="$passivetex.extensions != 0"> +    <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex" +                    fotex-bookmark-level="1" +                    fotex-bookmark-label="{$id}"> +      <xsl:value-of select="$title"/> +    </fotex:bookmark> +  </xsl:if> + +  <fo:block keep-with-next.within-column="always" +            hyphenate="false"> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:outline-level"> +        <xsl:choose> +          <xsl:when test="count($node/ancestor::*) > 0"> +            <xsl:value-of select="count($node/ancestor::*)"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +      <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +      <xsl:attribute name="axf:outline-title"> +        <xsl:value-of select="normalize-space($title)"/> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$title"/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="set"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="preamble" +                select="*[not(self::book or self::setindex)]"/> + +  <xsl:variable name="content" select="book|setindex"/> + +  <xsl:variable name="titlepage-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'titlepage'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="lot-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'lot'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:if test="$preamble"> +    <fo:page-sequence hyphenate="{$hyphenate}" +                      master-reference="{$titlepage-master-reference}"> +      <xsl:attribute name="language"> +        <xsl:call-template name="l10n.language"/> +      </xsl:attribute> +      <xsl:attribute name="format"> +        <xsl:call-template name="page.number.format"> +          <xsl:with-param name="master-reference"  +                          select="$titlepage-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="initial-page-number"> +        <xsl:call-template name="initial.page.number"> +          <xsl:with-param name="master-reference"  +                          select="$titlepage-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="force-page-count"> +        <xsl:call-template name="force.page.count"> +          <xsl:with-param name="master-reference"  +                          select="$titlepage-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="hyphenation-character"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-character'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-push-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-remain-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:apply-templates select="." mode="running.head.mode"> +        <xsl:with-param name="master-reference" select="$titlepage-master-reference"/> +      </xsl:apply-templates> + +      <xsl:apply-templates select="." mode="running.foot.mode"> +        <xsl:with-param name="master-reference" select="$titlepage-master-reference"/> +      </xsl:apply-templates> + +      <fo:flow flow-name="xsl-region-body"> +        <xsl:call-template name="set.flow.properties"> +          <xsl:with-param name="element" select="local-name(.)"/> +          <xsl:with-param name="master-reference"  +                          select="$titlepage-master-reference"/> +        </xsl:call-template> + +        <fo:block id="{$id}"> +          <xsl:call-template name="set.titlepage"/> +        </fo:block> +      </fo:flow> +    </fo:page-sequence> +  </xsl:if> + +  <xsl:variable name="toc.params"> +    <xsl:call-template name="find.path.params"> +      <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:if test="contains($toc.params, 'toc')"> +    <fo:page-sequence hyphenate="{$hyphenate}" +                      master-reference="{$lot-master-reference}"> +      <xsl:attribute name="language"> +        <xsl:call-template name="l10n.language"/> +      </xsl:attribute> +      <xsl:attribute name="format"> +        <xsl:call-template name="page.number.format"> +          <xsl:with-param name="element" select="'toc'"/> +          <xsl:with-param name="master-reference" +                          select="$lot-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="initial-page-number"> +        <xsl:call-template name="initial.page.number"> +          <xsl:with-param name="master-reference" +                          select="$lot-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="force-page-count"> +        <xsl:call-template name="force.page.count"> +          <xsl:with-param name="master-reference" +                          select="$lot-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="hyphenation-character"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-character'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-push-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-remain-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:apply-templates select="." mode="running.head.mode"> +        <xsl:with-param name="master-reference" select="$lot-master-reference"/> +      </xsl:apply-templates> + +      <xsl:apply-templates select="." mode="running.foot.mode"> +        <xsl:with-param name="master-reference" select="$lot-master-reference"/> +      </xsl:apply-templates> + +      <fo:flow flow-name="xsl-region-body"> +        <xsl:call-template name="set.flow.properties"> +          <xsl:with-param name="element" select="local-name(.)"/> +          <xsl:with-param name="master-reference"  +                          select="$lot-master-reference"/> +        </xsl:call-template> + +        <xsl:call-template name="set.toc"/> +      </fo:flow> +    </fo:page-sequence> +  </xsl:if> + +  <xsl:apply-templates select="$content"/> +</xsl:template> + +<xsl:template match="set/setinfo"></xsl:template> +<xsl:template match="set/title"></xsl:template> +<xsl:template match="set/subtitle"></xsl:template> +<xsl:template match="set/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="book"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="preamble" +                select="title|subtitle|titleabbrev|bookinfo|info"/> + +  <xsl:variable name="content" +                select="node()[not(self::title or self::subtitle +                            or self::titleabbrev +                            or self::info +                            or self::bookinfo)]"/> + +  <xsl:variable name="titlepage-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'titlepage'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="front.cover"/> + +  <xsl:if test="$preamble"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$titlepage-master-reference"/> +      <xsl:with-param name="content"> +        <fo:block id="{$id}"> +          <xsl:call-template name="book.titlepage"/> +        </fo:block> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:apply-templates select="dedication" mode="dedication"/> + +  <xsl:call-template name="make.book.tocs"/> + +  <xsl:apply-templates select="$content"/> + +  <xsl:call-template name="back.cover"/> + +</xsl:template> + +<xsl:template match="book/bookinfo"></xsl:template> +<xsl:template match="book/info"></xsl:template> +<xsl:template match="book/title"></xsl:template> +<xsl:template match="book/subtitle"></xsl:template> +<xsl:template match="book/titleabbrev"></xsl:template> + +<!-- Placeholder templates --> +<xsl:template name="front.cover"/> +<xsl:template name="back.cover"/> + +<!-- ================================================================= --> +<xsl:template name="make.book.tocs"> + +  <xsl:variable name="lot-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'lot'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="toc.params"> +    <xsl:call-template name="find.path.params"> +      <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:if test="contains($toc.params, 'toc')"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'TableofContents'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="division.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:if test="contains($toc.params,'figure') and .//figure"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'ListofFigures'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="list.of.titles"> +          <xsl:with-param name="titles" select="'figure'"/> +          <xsl:with-param name="nodes" select=".//figure"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:if test="contains($toc.params,'table') and .//table"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'ListofTables'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="list.of.titles"> +          <xsl:with-param name="titles" select="'table'"/> +          <xsl:with-param name="nodes" select=".//table"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:if test="contains($toc.params,'example') and .//example"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'ListofExample'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="list.of.titles"> +          <xsl:with-param name="titles" select="'example'"/> +          <xsl:with-param name="nodes" select=".//example"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:if test="contains($toc.params,'equation') and  +                 .//equation[title or info/title]"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'ListofEquations'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="list.of.titles"> +          <xsl:with-param name="titles" select="'equation'"/> +          <xsl:with-param name="nodes"  +                          select=".//equation[title or info/title]"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> + +  <xsl:if test="contains($toc.params,'procedure') and  +                 .//procedure[title or info/title]"> +    <xsl:call-template name="page.sequence"> +      <xsl:with-param name="master-reference" +                      select="$lot-master-reference"/> +      <xsl:with-param name="element" select="'toc'"/> +      <xsl:with-param name="gentext-key" select="'ListofProcedures'"/> +      <xsl:with-param name="content"> +        <xsl:call-template name="list.of.titles"> +          <xsl:with-param name="titles" select="'procedure'"/> +          <xsl:with-param name="nodes"  +                          select=".//procedure[title or info/title]"/> +        </xsl:call-template> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:if> +</xsl:template> +<!-- ==================================================================== --> + +<xsl:template match="part"> +  <xsl:if test="not(partintro)"> +    <xsl:apply-templates select="." mode="part.titlepage.mode"/> +    <xsl:call-template name="generate.part.toc"/> +  </xsl:if> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="part" mode="part.titlepage.mode"> +  <!-- done this way to force the context node to be the part --> +  <xsl:param name="additional.content"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="titlepage-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'titlepage'"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$titlepage-master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference"  +                        select="$titlepage-master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference"  +                        select="$titlepage-master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference"  +                        select="$titlepage-master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$titlepage-master-reference"/> +    </xsl:apply-templates> + +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$titlepage-master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference"  +                        select="$titlepage-master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}"> +        <xsl:call-template name="part.titlepage"/> +      </fo:block> +      <xsl:copy-of select="$additional.content"/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="part/docinfo|partinfo"></xsl:template> +<xsl:template match="part/info"></xsl:template> +<xsl:template match="part/title"></xsl:template> +<xsl:template match="part/subtitle"></xsl:template> +<xsl:template match="part/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="generate.part.toc"> +  <xsl:param name="part" select="."/> + +  <xsl:variable name="lot-master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass" select="'lot'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="toc.params"> +    <xsl:call-template name="find.path.params"> +      <xsl:with-param name="node" select="$part"/> +      <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="nodes" select="reference| +                                     preface| +                                     chapter| +                                     appendix| +                                     article| +                                     bibliography| +                                     glossary| +                                     index"/> + +  <xsl:if test="count($nodes) > 0 and contains($toc.params, 'toc')"> +    <fo:page-sequence hyphenate="{$hyphenate}" +                      master-reference="{$lot-master-reference}"> +      <xsl:attribute name="language"> +        <xsl:call-template name="l10n.language"/> +      </xsl:attribute> +      <xsl:attribute name="format"> +        <xsl:call-template name="page.number.format"> +          <xsl:with-param name="element" select="'toc'"/> +          <xsl:with-param name="master-reference"  +                          select="$lot-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="initial-page-number"> +        <xsl:call-template name="initial.page.number"> +          <xsl:with-param name="element" select="'toc'"/> +          <xsl:with-param name="master-reference"  +                          select="$lot-master-reference"/> +         </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="force-page-count"> +        <xsl:call-template name="force.page.count"> +          <xsl:with-param name="master-reference"  +                          select="$lot-master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="hyphenation-character"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-character'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-push-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-remain-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:apply-templates select="$part" mode="running.head.mode"> +        <xsl:with-param name="master-reference" select="$lot-master-reference"/> +      </xsl:apply-templates> + +      <xsl:apply-templates select="$part" mode="running.foot.mode"> +        <xsl:with-param name="master-reference" select="$lot-master-reference"/> +      </xsl:apply-templates> + +      <fo:flow flow-name="xsl-region-body"> +        <xsl:call-template name="set.flow.properties"> +          <xsl:with-param name="element" select="local-name(.)"/> +          <xsl:with-param name="master-reference"  +                          select="$lot-master-reference"/> +        </xsl:call-template> + +        <xsl:call-template name="division.toc"> +          <xsl:with-param name="toc-context" select="$part"/> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> + +      </fo:flow> +    </fo:page-sequence> +  </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="part/partintro"> +  <xsl:apply-templates select=".." mode="part.titlepage.mode"> +    <xsl:with-param name="additional.content"> +      <xsl:if test="title"> +        <xsl:call-template name="partintro.titlepage"/> +      </xsl:if> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:apply-templates> + +  <xsl:call-template name="generate.part.toc"> +    <xsl:with-param name="part" select=".."/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="partintro/title"></xsl:template> +<xsl:template match="partintro/subtitle"></xsl:template> +<xsl:template match="partintro/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="book" mode="division.number"> +  <xsl:number from="set" count="book" format="1."/> +</xsl:template> + +<xsl:template match="part" mode="division.number"> +  <xsl:number from="book" count="part" format="I."/> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/docbook.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/docbook.xsl new file mode 100644 index 0000000..836250d --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/docbook.xsl @@ -0,0 +1,331 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:exsl="http://exslt.org/common" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:ng="http://docbook.org/docbook-ng" +                xmlns:db="http://docbook.org/ns/docbook" +                exclude-result-prefixes="db ng exsl" +                version='1.0'> + +<!-- It is important to use indent="no" here, otherwise verbatim --> +<!-- environments get broken by indented tags...at least when the --> +<!-- callout extension is used...at least with some processors --> +<xsl:output method="xml" indent="no"/> + +<!-- ******************************************************************** +     $Id: docbook.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:include href="../VERSION"/> +<xsl:include href="param.xsl"/> +<xsl:include href="../lib/lib.xsl"/> +<xsl:include href="../common/l10n.xsl"/> +<xsl:include href="../common/common.xsl"/> +<xsl:include href="../common/utility.xsl"/> +<xsl:include href="../common/labels.xsl"/> +<xsl:include href="../common/titles.xsl"/> +<xsl:include href="../common/subtitles.xsl"/> +<xsl:include href="../common/gentext.xsl"/> +<xsl:include href="../common/olink.xsl"/> +<xsl:include href="../common/targets.xsl"/> +<xsl:include href="../common/pi.xsl"/> +<xsl:include href="autotoc.xsl"/> +<xsl:include href="autoidx.xsl"/> +<xsl:include href="lists.xsl"/> +<xsl:include href="callout.xsl"/> +<xsl:include href="verbatim.xsl"/> +<xsl:include href="graphics.xsl"/> +<xsl:include href="xref.xsl"/> +<xsl:include href="formal.xsl"/> +<xsl:include href="table.xsl"/> +<xsl:include href="htmltbl.xsl"/> +<xsl:include href="sections.xsl"/> +<xsl:include href="inline.xsl"/> +<xsl:include href="footnote.xsl"/> +<xsl:include href="fo.xsl"/> +<xsl:include href="fo-rtf.xsl"/> +<xsl:include href="info.xsl"/> +<xsl:include href="keywords.xsl"/> +<xsl:include href="division.xsl"/> +<xsl:include href="index.xsl"/> +<xsl:include href="toc.xsl"/> +<xsl:include href="refentry.xsl"/> +<xsl:include href="math.xsl"/> +<xsl:include href="admon.xsl"/> +<xsl:include href="component.xsl"/> +<xsl:include href="biblio.xsl"/> +<xsl:include href="biblio-iso690.xsl"/> +<xsl:include href="glossary.xsl"/> +<xsl:include href="block.xsl"/> +<xsl:include href="task.xsl"/> +<xsl:include href="qandaset.xsl"/> +<xsl:include href="synop.xsl"/> +<xsl:include href="titlepage.xsl"/> +<xsl:include href="titlepage.templates.xsl"/> +<xsl:include href="pagesetup.xsl"/> +<xsl:include href="pi.xsl"/> +<xsl:include href="spaces.xsl"/> +<xsl:include href="ebnf.xsl"/> +<xsl:include href="../html/chunker.xsl"/> +<xsl:include href="annotations.xsl"/> +<xsl:include href="../common/stripns.xsl"/> + +<xsl:include href="fop.xsl"/> +<xsl:include href="fop1.xsl"/> +<xsl:include href="passivetex.xsl"/> +<xsl:include href="xep.xsl"/> +<xsl:include href="axf.xsl"/> +<xsl:include href="ptc.xsl"/> + +<xsl:param name="stylesheet.result.type" select="'fo'"/> + +<!-- ==================================================================== --> + +<xsl:key name="id" match="*" use="@id|@xml:id"/> + +<!-- ==================================================================== --> + +<xsl:template match="*"> +  <xsl:message> +    <xsl:value-of select="name(.)"/> +    <xsl:text> encountered</xsl:text> +    <xsl:if test="parent::*"> +      <xsl:text> in </xsl:text> +      <xsl:value-of select="name(parent::*)"/> +    </xsl:if> +    <xsl:text>, but no template matches.</xsl:text> +  </xsl:message> +  <fo:block color="red"> +    <xsl:text><</xsl:text> +    <xsl:value-of select="name(.)"/> +    <xsl:text>></xsl:text> +    <xsl:apply-templates/>  +    <xsl:text></</xsl:text> +    <xsl:value-of select="name(.)"/> +    <xsl:text>></xsl:text> +  </fo:block> +</xsl:template> + +<!-- Update this list if new root elements supported --> +<xsl:variable name="root.elements" select="' appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex '"/> + +<xsl:template match="/"> +  <!-- * Get a title for current doc so that we let the user --> +  <!-- * know what document we are processing at this point. --> +  <xsl:variable name="doc.title"> +    <xsl:call-template name="get.doc.title"/> +  </xsl:variable> +  <xsl:choose> +    <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document, +         toss the namespace and continue.  Use the docbook5 namespaced +         stylesheets for DocBook5 if you don't want to use this feature.--> +    <!-- 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:variable name="root.element" select="key('id', $rootid)"/> +          <xsl:choose> +            <xsl:when test="count($root.element) = 0"> +              <xsl:message terminate="yes"> +                <xsl:text>ID '</xsl:text> +                <xsl:value-of select="$rootid"/> +                <xsl:text>' not found in document.</xsl:text> +              </xsl:message> +            </xsl:when> +            <xsl:when test="not(contains($root.elements, concat(' ', local-name($root.element), ' ')))"> +              <xsl:message terminate="yes"> +                <xsl:text>ERROR: Document root element ($rootid=</xsl:text> +                <xsl:value-of select="$rootid"/> +                <xsl:text>) for FO output </xsl:text> +                <xsl:text>must be one of the following elements:</xsl:text> +                <xsl:value-of select="$root.elements"/> +              </xsl:message> +            </xsl:when> +            <!-- Otherwise proceed --> +            <xsl:otherwise> +              <xsl:if test="$collect.xref.targets = 'yes' or +                            $collect.xref.targets = 'only'"> +                <xsl:apply-templates select="$root.element" +                                     mode="collect.targets"/> +              </xsl:if> +              <xsl:if test="$collect.xref.targets != 'only'"> +                <xsl:apply-templates select="$root.element" +                                     mode="process.root"/> +              </xsl:if> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <!-- Otherwise process the document root element --> +        <xsl:otherwise> +          <xsl:variable name="document.element" select="*[1]"/> +          <xsl:choose> +            <xsl:when test="not(contains($root.elements, +                     concat(' ', local-name($document.element), ' ')))"> +              <xsl:message terminate="yes"> +                <xsl:text>ERROR: Document root element for FO output </xsl:text> +                <xsl:text>must be one of the following elements:</xsl:text> +                <xsl:value-of select="$root.elements"/> +              </xsl:message> +            </xsl:when> +            <!-- Otherwise proceed --> +            <xsl:otherwise> +              <xsl:if test="$collect.xref.targets = 'yes' or +                            $collect.xref.targets = 'only'"> +                <xsl:apply-templates select="/" +                                     mode="collect.targets"/> +              </xsl:if> +              <xsl:if test="$collect.xref.targets != 'only'"> +                <xsl:apply-templates select="/" +                                     mode="process.root"/> +              </xsl:if> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="process.root"> +  <xsl:variable name="document.element" select="self::*"/> + +  <xsl:call-template name="root.messages"/> + +  <xsl:variable name="title"> +    <xsl:choose> +      <xsl:when test="$document.element/title[1]"> +        <xsl:value-of select="$document.element/title[1]"/> +      </xsl:when> +      <xsl:otherwise>[could not find document title]</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +   +  <!-- Include all id values in XEP output --> +  <xsl:if test="$xep.extensions != 0"> +    <xsl:processing-instruction  +     name="xep-pdf-drop-unused-destinations">false</xsl:processing-instruction> +  </xsl:if> + +  <fo:root xsl:use-attribute-sets="root.properties"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"> +        <xsl:with-param name="target" select="/*[1]"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:if test="$xep.extensions != 0"> +      <xsl:call-template name="xep-pis"/> +      <xsl:call-template name="xep-document-information"/> +    </xsl:if> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:call-template name="axf-document-information"/> +    </xsl:if> + +    <xsl:call-template name="setup.pagemasters"/> + +    <xsl:if test="$fop.extensions != 0"> +      <xsl:apply-templates select="$document.element" mode="fop.outline"/> +    </xsl:if> + +    <xsl:if test="$fop1.extensions != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element"  +                             mode="fop1.outline"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <fo:bookmark-tree> +          <xsl:copy-of select="$bookmarks"/> +        </fo:bookmark-tree> +      </xsl:if> +    </xsl:if> + +    <xsl:if test="$xep.extensions != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element" mode="xep.outline"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions"> +          <xsl:copy-of select="$bookmarks"/> +        </rx:outline> +      </xsl:if> +    </xsl:if> + +    <xsl:if test="$arbortext.extensions != 0 and $ati.xsl11.bookmarks != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element" +                             mode="ati.xsl11.bookmarks"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <fo:bookmark-tree> +          <xsl:copy-of select="$bookmarks"/> +        </fo:bookmark-tree> +      </xsl:if> +    </xsl:if> + +    <xsl:apply-templates select="$document.element"/> +  </fo:root> +</xsl:template> + +<xsl:template name="root.messages"> +  <!-- redefine this any way you'd like to output messages --> +  <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE --> +  <xsl:message> +    <xsl:text>Making </xsl:text> +    <xsl:value-of select="$page.orientation"/> +    <xsl:text> pages on </xsl:text> +    <xsl:value-of select="$paper.type"/> +    <xsl:text> paper (</xsl:text> +    <xsl:value-of select="$page.width"/> +    <xsl:text>x</xsl:text> +    <xsl:value-of select="$page.height"/> +    <xsl:text>)</xsl:text> +  </xsl:message> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/ebnf.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/ebnf.xsl new file mode 100644 index 0000000..c64b194 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/ebnf.xsl @@ -0,0 +1,325 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" +                exclude-result-prefixes="doc" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: ebnf.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This 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 8196 2007-07-05 21:18:33Z manuel $ +</releaseinfo> +<author><surname>Walsh</surname> +<firstname>Norman</firstname></author> +<copyright><year>1999</year><year>2000</year><year>2001</year> +<holder>Norman Walsh</holder> +</copyright> +</referenceinfo> +<title>HTML EBNF Reference</title> + +<partintro> +<section><title>Introduction</title> + +<para>This is technical reference documentation for the DocBook XSL +Stylesheets; it documents (some of) the parameters, templates, and +other elements of the stylesheets.</para> + +<para>This reference describes the templates and parameters relevant +to formatting EBNF markup.</para> + +<para>This is not intended to be <quote>user</quote> documentation. +It is provided for developers writing customization layers for the +stylesheets, and for anyone who's interested in <quote>how it +works</quote>.</para> + +<para>Although I am trying to be thorough, this documentation is known +to be incomplete. Don't forget to read the source, too :-)</para> +</section> +</partintro> +</doc:reference> + +<!-- ==================================================================== --> + +<xsl:template match="productionset"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:choose> +    <xsl:when test="title"> +      <fo:block id="{$id}" xsl:use-attribute-sets="formal.object.properties"> +        <xsl:call-template name="formal.object.heading"> +          <xsl:with-param name="placement" select="'before'"/> +        </xsl:call-template> + +        <fo:table table-layout="fixed" width="100%"> +          <fo:table-column column-number="1" column-width="3%"/> +          <fo:table-column column-number="2" column-width="15%"/> +          <fo:table-column column-number="3" column-width="5%"/> +          <fo:table-column column-number="4" column-width="52%"/> +          <fo:table-column column-number="5" column-width="25%"/> +          <fo:table-body start-indent="0pt" end-indent="0pt"> +            <xsl:apply-templates select="production|productionrecap"/> +          </fo:table-body> +        </fo:table> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:table id="{$id}" table-layout="fixed" width="100%"> +        <fo:table-column column-number="1" column-width="3%"/> +        <fo:table-column column-number="2" column-width="15%"/> +        <fo:table-column column-number="3" column-width="5%"/> +        <fo:table-column column-number="4" column-width="52%"/> +        <fo:table-column column-number="5" column-width="25%"/> +        <fo:table-body start-indent="0pt" end-indent="0pt"> +          <xsl:apply-templates select="production|productionrecap"/> +        </fo:table-body> +      </fo:table> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="productionset/title"> +  <!-- suppressed --> +</xsl:template> + +<xsl:template match="production"> +  <xsl:param name="recap" select="false()"/> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> +  <fo:table-row> +    <fo:table-cell> +      <fo:block text-align="start"> +        <xsl:text>[</xsl:text> +        <xsl:number count="production" level="any"/> +        <xsl:text>]</xsl:text> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell> +      <fo:block text-align="end"> +        <xsl:choose> +          <xsl:when test="$recap"> +            <fo:basic-link internal-destination="{$id}" +                           xsl:use-attribute-sets="xref.properties"> +              <xsl:apply-templates select="lhs"/> +            </fo:basic-link> +          </xsl:when> +          <xsl:otherwise> +            <fo:wrapper id="{$id}"> +              <xsl:apply-templates select="lhs"/> +            </fo:wrapper> +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell> +      <fo:block text-align="center"> +        <xsl:copy-of select="$ebnf.assignment"/> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell> +      <fo:block> +        <xsl:apply-templates select="rhs"/> +        <xsl:copy-of select="$ebnf.statement.terminator"/> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell border-start-width="3pt"> +      <fo:block text-align="start"> +        <xsl:choose> +          <xsl:when test="rhs/lineannotation|constraint"> +            <xsl:apply-templates select="rhs/lineannotation" mode="rhslo"/> +            <xsl:apply-templates select="constraint"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:text> </xsl:text> +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </fo:table-cell> +  </fo:table-row> +</xsl:template> + +<xsl:template match="productionrecap"> +  <xsl:variable name="targets" select="key('id',@linkend)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:if test="count($targets)=0"> +    <xsl:message> +      <xsl:text>Error: no ID for productionrecap linkend: </xsl:text> +      <xsl:value-of select="@linkend"/> +      <xsl:text>.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="count($targets)>1"> +    <xsl:message> +      <xsl:text>Warning: multiple "IDs" for productionrecap linkend: </xsl:text> +      <xsl:value-of select="@linkend"/> +      <xsl:text>.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:apply-templates select="$target"> +    <xsl:with-param name="recap" select="true()"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="lhs"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="rhs"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="nonterminal"> +  <xsl:variable name="linkend"> +    <xsl:call-template name="xpointer.idref"> +      <xsl:with-param name="xpointer" select="@def"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="check.id.unique"> +    <xsl:with-param name="linkend" select="$linkend"/> +  </xsl:call-template> + +  <xsl:call-template name="check.idref.targets"> +    <xsl:with-param name="linkend" select="$linkend"/> +    <xsl:with-param name="element-list">production</xsl:with-param> +  </xsl:call-template> + +  <!-- If you don't provide content, you can't point outside this doc. --> +  <xsl:choose> +    <xsl:when test="*|text()"><!--nop--></xsl:when> +    <xsl:otherwise> +      <xsl:if test="$linkend = ''"> +	<xsl:message> +	  <xsl:text>Non-terminals with no content must point to </xsl:text> +	  <xsl:text>production elements in the current document.</xsl:text> +	</xsl:message> +	<xsl:message> +	  <xsl:text>Invalid xpointer for empty nt: </xsl:text> +	  <xsl:value-of select="@def"/> +	</xsl:message> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:variable name="href"> +    <xsl:choose> +      <xsl:when test="$linkend != ''"> +	<xsl:variable name="targets" select="key('id',$linkend)"/> +	<xsl:variable name="target" select="$targets[1]"/> +        <xsl:call-template name="object.id"> +          <xsl:with-param name="object" select="$target"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="@def"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:basic-link internal-destination="{$href}" +                 xsl:use-attribute-sets="xref.properties"> +    <xsl:choose> +      <xsl:when test="*|text()"> +        <xsl:apply-templates/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:choose> +          <xsl:when test="$linkend != ''"> +            <xsl:variable name="targets" select="key('id',$linkend)"/> +            <xsl:variable name="target" select="$targets[1]"/> +            <xsl:apply-templates select="$target/lhs"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:text>???</xsl:text> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> +  </fo:basic-link> +</xsl:template> + +<xsl:template match="rhs/lineannotation"> +  <!--nop--> +</xsl:template> + +<xsl:template match="rhs/lineannotation" mode="rhslo"> +  <xsl:text>/* </xsl:text> +  <xsl:apply-templates/> +  <xsl:text> */</xsl:text> +</xsl:template> + +<xsl:template match="constraint"> +  <xsl:call-template name="check.id.unique"> +    <xsl:with-param name="linkend" select="@linkend"/> +  </xsl:call-template> + +  <xsl:call-template name="check.idref.targets"> +    <xsl:with-param name="linkend" select="@linkend"/> +    <xsl:with-param name="element-list">constraintdef</xsl:with-param> +  </xsl:call-template> + +  <xsl:variable name="href"> +    <xsl:variable name="targets" select="key('id',@linkend)"/> +    <xsl:variable name="target" select="$targets[1]"/> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$target"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:if test="preceding-sibling::constraint"> +    <fo:inline linefeed-treatment="preserve">
</fo:inline> +  </xsl:if> +  <xsl:text>[ </xsl:text> + +  <xsl:choose> +    <xsl:when test="@role"> +      <xsl:value-of select="@role"/> +      <xsl:text>: </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="targets" select="key('id',@linkend)"/> +      <xsl:variable name="target" select="$targets[1]"/> +      <xsl:if test="$target/@role"> +	<xsl:value-of select="$target/@role"/> +	<xsl:text>: </xsl:text> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> + +  <fo:basic-link internal-destination="{$href}" +                 xsl:use-attribute-sets="xref.properties"> +    <xsl:variable name="targets" select="key('id',@linkend)"/> +    <xsl:variable name="target" select="$targets[1]"/> +    <xsl:apply-templates select="$target" mode="title.markup"/> +  </fo:basic-link> +  <xsl:text> ]</xsl:text> +</xsl:template> + +<xsl:template match="constraintdef"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> +  <fo:block id="{$id}"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="constraintdef/title"> +  <fo:block font-weight="bold"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fo-rtf.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fo-rtf.xsl new file mode 100644 index 0000000..c1e277d --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fo-rtf.xsl @@ -0,0 +1,154 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:exsl="http://exslt.org/common" +                xmlns:set="http://exslt.org/sets" +                exclude-result-prefixes="exsl set" +                version="1.0"> + +<!-- ******************************************************************** +     $Id: fo-rtf.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- This module contains templates that match against FO nodes. It is used +     to post-process result tree fragments for some sorts of cleanup. +     These templates can only ever be fired by a processor that supports +     exslt:node-set(). --> + +<!-- ==================================================================== --> + +<!-- insert.fo.fnum mode templates insert a particular RTF at the beginning +     of the first paragraph in the primary RTF. In fact, they are inserting +     a footnote-number, so we tinker a few other things too, like spacing and +     font-sizes. --> + +<xsl:template match="/" mode="insert.fo.fnum"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:apply-templates mode="insert.fo.fnum"> +    <xsl:with-param name="mark" select="$mark"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="*" mode="insert.fo.fnum"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:apply-templates mode="insert.fo.fnum"> +      <xsl:with-param name="mark" select="$mark"/> +    </xsl:apply-templates> +  </xsl:copy> +</xsl:template> + +<xsl:template match="fo:block" mode="insert.fo.fnum"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy> +    <xsl:for-each select="@*"> +      <xsl:choose> +        <xsl:when test="starts-with(name(.), 'space-before')"/> +        <xsl:when test="starts-with(name(.), 'space-after')"/> +        <xsl:when test="starts-with(name(.), 'font-size')"/> +        <xsl:otherwise> +          <xsl:copy-of select="."/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:for-each> +    <xsl:if test="not(preceding::fo:block)"> +      <xsl:copy-of select="$mark"/> +    </xsl:if> +    <xsl:apply-templates mode="insert.fo.fnum"> +      <xsl:with-param name="mark" select="$mark"/> +    </xsl:apply-templates> +  </xsl:copy> +</xsl:template> + +<xsl:template match="text()|processing-instruction()|comment()" mode="insert.fo.fnum"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy/> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- insert.fo.block mode templates insert a particular RTF at the beginning +     of the first paragraph in the primary RTF. --> + +<xsl:template match="/" mode="insert.fo.block"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:apply-templates mode="insert.fo.block"> +    <xsl:with-param name="mark" select="$mark"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="*" mode="insert.fo.block"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:apply-templates mode="insert.fo.block"> +      <xsl:with-param name="mark" select="$mark"/> +    </xsl:apply-templates> +  </xsl:copy> +</xsl:template> + +<xsl:template match="fo:block" mode="insert.fo.block"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:if test="not(preceding::fo:block)"> +      <xsl:copy-of select="$mark"/> +    </xsl:if> +    <xsl:apply-templates mode="insert.fo.block"> +      <xsl:with-param name="mark" select="$mark"/> +    </xsl:apply-templates> +  </xsl:copy> +</xsl:template> + +<xsl:template match="text()|processing-instruction()|comment()" mode="insert.fo.block"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy/> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- insert.fo.text mode templates insert a particular RTF at the beginning +     of the first text-node in the primary RTF. --> + +<xsl:template match="/" mode="insert.fo.text"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:apply-templates mode="insert.fo.text"> +    <xsl:with-param name="mark" select="$mark"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="*" mode="insert.fo.text"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:apply-templates mode="insert.fo.text"> +      <xsl:with-param name="mark" select="$mark"/> +    </xsl:apply-templates> +  </xsl:copy> +</xsl:template> + +<xsl:template match="text()|processing-instruction()|comment()" mode="insert.fo.text"> +  <xsl:param name="mark" select="'?'"/> + +  <xsl:if test="not(preceding::text())"> +    <xsl:copy-of select="$mark"/> +  </xsl:if> + +  <xsl:copy/> +</xsl:template> + +<xsl:template match="processing-instruction()|comment()" mode="insert.fo.text"> +  <xsl:param name="mark" select="'?'"/> +  <xsl:copy/> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fo.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fo.xsl new file mode 100644 index 0000000..cd3d27a --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fo.xsl @@ -0,0 +1,71 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: fo.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This 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="anchor"> +  <xsl:param name="node" select="."/> +  <xsl:param name="conditional" select="1"/> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="$node"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:if test="$conditional = 0 or $node/@id or $node/@xml:id"> +    <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute> +  </xsl:if> +</xsl:template> + +<xsl:template name="dingbat"> +  <xsl:param name="dingbat">bullet</xsl:param> +  <xsl:variable name="symbol"> +    <xsl:choose> +      <xsl:when test="$dingbat='bullet'">o</xsl:when> +      <xsl:when test="$dingbat='copyright'">©</xsl:when> +      <xsl:when test="$dingbat='trademark'">™</xsl:when> +      <xsl:when test="$dingbat='trade'">™</xsl:when> +      <xsl:when test="$dingbat='registered'">®</xsl:when> +      <xsl:when test="$dingbat='service'">(SM)</xsl:when> +      <xsl:when test="$dingbat='ldquo'">"</xsl:when> +      <xsl:when test="$dingbat='rdquo'">"</xsl:when> +      <xsl:when test="$dingbat='lsquo'">'</xsl:when> +      <xsl:when test="$dingbat='rsquo'">'</xsl:when> +      <xsl:when test="$dingbat='em-dash'">—</xsl:when> +      <xsl:when test="$dingbat='en-dash'">-</xsl:when> +      <xsl:otherwise>o</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$dingbat.font.family = ''"> +      <xsl:copy-of select="$symbol"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline font-family="{$dingbat.font.family}"> +        <xsl:copy-of select="$symbol"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="href.target"> +  <xsl:param name="context" select="."/> +  <xsl:param name="object" select="."/> +  <xsl:text>#</xsl:text> +  <xsl:call-template name="object.id"> +    <xsl:with-param name="object" select="$object"/> +  </xsl:call-template> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/footnote.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/footnote.xsl new file mode 100644 index 0000000..422ee30 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/footnote.xsl @@ -0,0 +1,186 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:exsl="http://exslt.org/common" +                exclude-result-prefixes="exsl" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: footnote.xsl 8369 2007-09-09 08:55:14Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:template name="format.footnote.mark"> +  <xsl:param name="mark" select="'?'"/> +  <fo:inline xsl:use-attribute-sets="footnote.mark.properties"> +    <xsl:choose> +      <xsl:when test="$fop.extensions != 0"> +        <xsl:attribute name="vertical-align">super</xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="baseline-shift">super</xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:copy-of select="$mark"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="footnote"> +  <xsl:choose> +    <xsl:when test="ancestor::table or ancestor::informaltable"> +      <xsl:call-template name="format.footnote.mark"> +        <xsl:with-param name="mark"> +          <xsl:apply-templates select="." mode="footnote.number"/> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <fo:footnote> +        <fo:inline> +          <xsl:call-template name="format.footnote.mark"> +            <xsl:with-param name="mark"> +              <xsl:apply-templates select="." mode="footnote.number"/> +            </xsl:with-param> +          </xsl:call-template> +        </fo:inline> +        <fo:footnote-body xsl:use-attribute-sets="footnote.properties"> +          <xsl:apply-templates/> +        </fo:footnote-body> +      </fo:footnote> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="footnoteref"> +  <xsl:variable name="footnote" select="key('id',@linkend)"/> +  <xsl:call-template name="format.footnote.mark"> +    <xsl:with-param name="mark"> +      <xsl:apply-templates select="$footnote" mode="footnote.number"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="footnote" mode="footnote.number"> +  <xsl:choose> +    <xsl:when test="string-length(@label) != 0"> +      <xsl:value-of select="@label"/> +    </xsl:when> +    <xsl:when test="ancestor::table or ancestor::informaltable"> +      <xsl:variable name="tfnum"> +        <xsl:number level="any" from="table|informaltable" format="1"/> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="string-length($table.footnote.number.symbols) >= $tfnum"> +          <xsl:value-of select="substring($table.footnote.number.symbols, $tfnum, 1)"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:number level="any" from="table|informaltable" +                      format="{$table.footnote.number.format}"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="fnum"> +        <!-- FIXME: list in @from is probably not complete --> +        <xsl:number level="any"  +                    from="chapter|appendix|preface|article|refentry|bibliography"  +                    count="footnote[not(@label)][not(ancestor::table) and not(ancestor::informaltable)]|ulink[$ulink.footnotes != 0][node()][@url != .][not(ancestor::footnote)][$ulink.show != 0]"  +                    format="1"/> +      </xsl:variable> +      <xsl:choose> +        <xsl:when test="string-length($footnote.number.symbols) >= $fnum"> +          <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:number value="$fnum" format="{$footnote.number.format}"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="footnote.body.number"> +  <xsl:variable name="footnote.mark"> +    <xsl:call-template name="format.footnote.mark"> +      <xsl:with-param name="mark"> +        <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="fo"> +    <xsl:apply-templates select="."/> +  </xsl:variable> + +  <xsl:variable name="fo-nodes" select="exsl:node-set($fo)"/> + +  <xsl:choose> +    <xsl:when test="$fo-nodes//fo:block"> +      <xsl:apply-templates select="$fo-nodes" mode="insert.fo.fnum"> +        <xsl:with-param name="mark" select="$footnote.mark"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="$fo-nodes" mode="insert.fo.text"> +        <xsl:with-param name="mark" select="$footnote.mark"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="footnote/para[1] +                     |footnote/simpara[1] +                     |footnote/formalpara[1]" +              priority="2"> +  <!-- this only works if the first thing in a footnote is a para, --> +  <!-- which is ok, because it usually is. --> +  <fo:block> +    <xsl:call-template name="format.footnote.mark"> +      <xsl:with-param name="mark"> +        <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/> +      </xsl:with-param> +    </xsl:call-template> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="footnote" mode="table.footnote.mode"> +  <xsl:choose> +    <xsl:when test="local-name(*[1]) = 'para' or local-name(*[1]) = 'simpara'"> +      <fo:block xsl:use-attribute-sets="table.footnote.properties"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> + +    <xsl:when test="function-available('exsl:node-set')"> +      <fo:block xsl:use-attribute-sets="table.footnote.properties"> +        <xsl:apply-templates select="*[1]" mode="footnote.body.number"/> +        <xsl:apply-templates select="*[position() > 1]"/> +      </fo:block> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:message> +        <xsl:text>Warning: footnote number may not be generated </xsl:text> +        <xsl:text>correctly; </xsl:text> +        <xsl:value-of select="local-name(*[1])"/> +        <xsl:text> unexpected as first child of footnote.</xsl:text> +      </xsl:message> +      <fo:block xsl:use-attribute-sets="table.footnote.properties"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fop.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fop.xsl new file mode 100644 index 0000000..d2ae39f --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fop.xsl @@ -0,0 +1,92 @@ +<?xml version='1.0' encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:fox="http://xml.apache.org/fop/extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: fop.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** +     (c) Stephane Bline Peregrine Systems 2001 +     Driver file to allow pdf bookmarking (based on fop implementation). +     ******************************************************************** --> +<!-- +In PDF bookmarks can't be used characters with code>255. This version of file +translates characters with code>255 back to ASCII. + +   Pavel Zampach (zampach@volny.cz) +--> + +<xsl:variable name="a-dia" select= +"'āăąćĉċčďđēĕėęěœĝğġģĥħĩīĭįıĵķĺļľŀłńņňŋōŏőŕŗřśŝşšţťŧũūŭůűųŵŷźżžĀĂĄĆĈĊČĎĐĒĔĖĘĚŒĜĞĠĢĤĦĨĪĬĮİĴĶĹĻĽĿŁŃŅŇŊŌŎŐŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽ'"/> +<xsl:variable name="a-asc" select= +"'aaaccccddeeeeeegggghhiiiiijklllllnnnnooorrrsssstttuuuuuuwyzzzAAACCCCDDEEEEEEGGGGHHIIIIIJKLLLLLNNNNOOORRRSSSSTTTUUUUUUWYYZZZ'"/> + +<xsl:template match="*" mode="fop.outline"> +  <xsl:variable name="id"> +    <xsl:value-of select="(@id|@xml:id)[1]"/> +  </xsl:variable> +  <xsl:if test="$id != ''"> +    <fox:destination internal-destination="{$id}"/> +  </xsl:if> +  <xsl:apply-templates select="*" mode="fop.outline"/> +</xsl:template> + +<xsl:template match="set|book|part|reference|preface|chapter|appendix|article +                     |glossary|bibliography|index|setindex +                     |refentry +                     |sect1|sect2|sect3|sect4|sect5|section" +              mode="fop.outline"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="bookmark-label"> +    <xsl:apply-templates select="." mode="object.title.markup"/> +  </xsl:variable> + +  <!-- Put the root element bookmark at the same level as its children --> +  <!-- If the object is a set or book, generate a bookmark for the toc --> + +  <xsl:choose> +    <xsl:when test="parent::*"> +      <fox:outline internal-destination="{$id}"> +        <fox:label> +          <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/> +        </fox:label> +        <xsl:apply-templates select="*" mode="fop.outline"/> +      </fox:outline> +    </xsl:when> +    <xsl:otherwise> +      <fox:outline internal-destination="{$id}"> +        <fox:label> +          <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/> +        </fox:label> +      </fox:outline> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc') +                    and (book|part|reference|preface|chapter|appendix|article +                         |glossary|bibliography|index|setindex +                         |refentry +                         |sect1|sect2|sect3|sect4|sect5|section)"> +        <fox:outline internal-destination="toc...{$id}"> +          <fox:label> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'TableofContents'"/> +            </xsl:call-template> +          </fox:label> +        </fox:outline> +      </xsl:if> +      <xsl:apply-templates select="*" mode="fop.outline"/> +    </xsl:otherwise> +  </xsl:choose> +  <fox:destination internal-destination="{$id}"/> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fop1.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fop1.xsl new file mode 100644 index 0000000..4e262e5 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/fop1.xsl @@ -0,0 +1,71 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<xsl:template match="*" mode="fop1.outline"> +  <xsl:apply-templates select="*" mode="fop1.outline"/> +</xsl:template> + +<xsl:template match="set|book|part|reference| +                     preface|chapter|appendix|article +                     |glossary|bibliography|index|setindex +                     |refentry +                     |sect1|sect2|sect3|sect4|sect5|section" +              mode="fop1.outline"> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="bookmark-label"> +    <xsl:apply-templates select="." mode="object.title.markup"/> +  </xsl:variable> + +  <!-- Put the root element bookmark at the same level as its children --> +  <!-- If the object is a set or book, generate a bookmark for the toc --> + +  <xsl:choose> +    <xsl:when test="parent::*"> +      <fo:bookmark internal-destination="{$id}"> +        <fo:bookmark-title> +          <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/> +        </fo:bookmark-title> +        <xsl:apply-templates select="*" mode="fop1.outline"/> +      </fo:bookmark> +    </xsl:when> +    <xsl:otherwise> +      <fo:bookmark internal-destination="{$id}"> +        <fo:bookmark-title> +          <xsl:value-of select="normalize-space(translate($bookmark-label, $a-dia, $a-asc))"/> +        </fo:bookmark-title> +      </fo:bookmark> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc') +                    and (book|part|reference|preface|chapter|appendix|article +                         |glossary|bibliography|index|setindex +                         |refentry +                         |sect1|sect2|sect3|sect4|sect5|section)"> +        <fo:bookmark internal-destination="toc...{$id}"> +          <fo:bookmark-title> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'TableofContents'"/> +            </xsl:call-template> +          </fo:bookmark-title> +        </fo:bookmark> +      </xsl:if> +      <xsl:apply-templates select="*" mode="fop1.outline"/> +    </xsl:otherwise> +  </xsl:choose> +<!-- +  <fo:bookmark internal-destination="{$id}"/> +--> +</xsl:template> + + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/formal.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/formal.xsl new file mode 100644 index 0000000..6823ade --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/formal.xsl @@ -0,0 +1,534 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: formal.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- formal.object creates a basic block containing the +     result of processing the object, including its title +     and any keep-together properties. +     The template calling formal.object may wrap these results in a +     float or pgwide block. --> + +<xsl:template name="formal.object"> +  <xsl:param name="placement" select="'before'"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="content"> +    <xsl:if test="$placement = 'before'"> +      <xsl:call-template name="formal.object.heading"> +        <xsl:with-param name="placement" select="$placement"/> +      </xsl:call-template> +    </xsl:if> +    <xsl:apply-templates/> +    <xsl:if test="$placement != 'before'"> +      <xsl:call-template name="formal.object.heading"> +        <xsl:with-param name="placement" select="$placement"/> +      </xsl:call-template> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="keep.together"> +    <xsl:call-template name="pi.dbfo_keep-together"/> +  </xsl:variable> + +  <xsl:choose> +    <!-- tables have their own templates and  +         are not handled by formal.object --> +    <xsl:when test="self::figure"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="figure.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="self::example"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="example.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="self::equation"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="equation.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="self::procedure"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="procedure.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="formal.object.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="formal.object.heading"> +  <xsl:param name="object" select="."/> +  <xsl:param name="placement" select="'before'"/> + +  <fo:block xsl:use-attribute-sets="formal.title.properties"> +    <xsl:choose> +      <xsl:when test="$placement = 'before'"> +        <xsl:attribute +               name="keep-with-next.within-column">always</xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute +               name="keep-with-previous.within-column">always</xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:apply-templates select="$object" mode="object.title.markup"> +      <xsl:with-param name="allow-anchors" select="1"/> +    </xsl:apply-templates> +  </fo:block> +</xsl:template> + +<xsl:template name="informal.object"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="keep.together"> +    <xsl:call-template name="pi.dbfo_keep-together"/> +  </xsl:variable> + +  <xsl:choose> +    <!-- informaltables have their own templates and  +         are not handled by formal.object --> +    <xsl:when test="local-name(.) = 'equation'"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="equation.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="local-name(.) = 'procedure'"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="procedure.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="local-name(.) = 'informalfigure'"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="informalfigure.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="local-name(.) = 'informalexample'"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="informalexample.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="local-name(.) = 'informalequation'"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="informalequation.properties"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}"  +                xsl:use-attribute-sets="informal.object.properties"> +        <xsl:if test="$keep.together != ''"> +          <xsl:attribute name="keep-together.within-column"><xsl:value-of +                          select="$keep.together"/></xsl:attribute> +        </xsl:if> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="semiformal.object"> +  <xsl:param name="placement" select="'before'"/> +  <xsl:choose> +    <xsl:when test="./title"> +      <xsl:call-template name="formal.object"> +        <xsl:with-param name="placement" select="$placement"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="informal.object"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="figure"> +  <xsl:variable name="param.placement" +              select="substring-after(normalize-space($formal.title.placement), +                                      concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="figure"> +    <xsl:choose> +      <xsl:when test="@pgwide = '1'"> +        <fo:block xsl:use-attribute-sets="pgwide.properties"> +          <xsl:call-template name="formal.object"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="formal.object"> +          <xsl:with-param name="placement" select="$placement"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="floatstyle"> +    <xsl:call-template name="floatstyle"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$floatstyle != ''"> +      <xsl:call-template name="floater"> +        <xsl:with-param name="position" select="$floatstyle"/> +        <xsl:with-param name="content" select="$figure"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$figure"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="example"> +  <xsl:variable name="param.placement" +             select="substring-after(normalize-space($formal.title.placement), +                                     concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Example doesn't have a pgwide attribute, so may use a PI --> +  <xsl:variable name="pgwide.pi"> +    <xsl:call-template name="pi.dbfo_pgwide"/> +  </xsl:variable> + +  <xsl:variable name="pgwide"> +    <xsl:choose> +      <xsl:when test="$pgwide.pi"> +        <xsl:value-of select="$pgwide.pi"/> +      </xsl:when> +      <!-- child element may set pgwide --> +      <xsl:when test="*[@pgwide]"> +        <xsl:value-of select="*[@pgwide][1]/@pgwide"/> +      </xsl:when> +    </xsl:choose> +  </xsl:variable> + +  <!-- Get align value from internal mediaobject --> +  <xsl:variable name="align"> +    <xsl:if test="mediaobject|mediaobjectco"> +      <xsl:variable name="olist" select="mediaobject/imageobject +                     |mediaobjectco/imageobjectco +                     |mediaobject/videoobject +                     |mediaobject/audioobject +                     |mediaobject/textobject"/> + +      <xsl:variable name="object.index"> +        <xsl:call-template name="select.mediaobject.index"> +          <xsl:with-param name="olist" select="$olist"/> +          <xsl:with-param name="count" select="1"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="object" select="$olist[position() = $object.index]"/> + +      <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="example"> +    <xsl:choose> +      <xsl:when test="$pgwide = '1'"> +        <fo:block xsl:use-attribute-sets="pgwide.properties"> +          <xsl:if test="$align != ''"> +            <xsl:attribute name="text-align"> +              <xsl:value-of select="$align"/> +            </xsl:attribute> +          </xsl:if> +          <xsl:call-template name="formal.object"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <fo:block> +          <xsl:if test="$align != ''"> +            <xsl:attribute name="text-align"> +              <xsl:value-of select="$align"/> +            </xsl:attribute> +          </xsl:if> +          <xsl:call-template name="formal.object"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </fo:block> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="floatstyle"> +    <xsl:call-template name="floatstyle"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$floatstyle != ''"> +      <xsl:call-template name="floater"> +        <xsl:with-param name="position" select="$floatstyle"/> +        <xsl:with-param name="content" select="$example"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$example"/> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<!-- Unified handling of CALS and HTML tables, formal and not --> +<!-- Creates a hierarchy of nested containers: +     - Outer container does a float. +     - Nested container does block-container for rotation +     - Nested block contains title, layout table and footnotes +     - Nested layout table placeholder template supports extensions. +     - fo:table is innermost. +     Created from the innermost and working out. +     Not all layers apply to every table. +--> +<xsl:template match="table|informaltable"> +  <xsl:if test="tgroup/tbody/tr +                |tgroup/thead/tr +                |tgroup/tfoot/tr"> +    <xsl:message terminate="yes"> +      <xsl:text>Broken table: tr descendent of CALS Table.</xsl:text> +      <xsl:text>The text in the first tr is:
</xsl:text> +      <xsl:value-of  +               select="(tgroup//tr)[1]"/> +    </xsl:message> +  </xsl:if> +  <xsl:if test="not(tgroup) and .//row"> +    <xsl:message terminate="yes"> +      <xsl:text>Broken table: row descendent of HTML table.</xsl:text> +      <xsl:text>The text in the first row is:
</xsl:text> +      <xsl:value-of  +               select=".//row[1]"/> +    </xsl:message> +  </xsl:if> + +  <!-- Contains fo:table, not title or footnotes --> +  <xsl:variable name="table.content"> +    <xsl:call-template name="make.table.content"/> +  </xsl:variable> + +  <!-- Optional layout table template for extensions --> +  <xsl:variable name="table.layout"> +    <xsl:call-template name="table.layout"> +      <xsl:with-param name="table.content" select="$table.content"/> +    </xsl:call-template> +  </xsl:variable> + +  <!-- fo:block contains title, layout table, and footnotes  --> +  <xsl:variable name="table.block"> +    <xsl:call-template name="table.block"> +      <xsl:with-param name="table.layout" select="$table.layout"/> +    </xsl:call-template> +  </xsl:variable> + +  <!-- pgwide or orient container --> +  <xsl:variable name="table.container"> +    <xsl:call-template name="table.container"> +      <xsl:with-param name="table.block" select="$table.block"/> +    </xsl:call-template> +  </xsl:variable> + +  <!-- float or not --> +  <xsl:variable name="floatstyle"> +    <xsl:call-template name="floatstyle"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$floatstyle != ''"> +      <xsl:call-template name="floater"> +        <xsl:with-param name="position" select="$floatstyle"/> +        <xsl:with-param name="content" select="$table.container"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$table.container"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + + +<xsl:template match="equation"> +  <xsl:variable name="param.placement" +              select="substring-after(normalize-space($formal.title.placement), +                                      concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Equation doesn't have a pgwide attribute, so may use a PI --> +  <xsl:variable name="pgwide"> +    <xsl:call-template name="pi.dbfo_pgwide"/> +  </xsl:variable> + +  <xsl:variable name="equation"> +    <xsl:choose> +      <xsl:when test="$pgwide = '1'"> +        <fo:block xsl:use-attribute-sets="pgwide.properties"> +          <xsl:call-template name="semiformal.object"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="semiformal.object"> +          <xsl:with-param name="placement" select="$placement"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="floatstyle"> +    <xsl:call-template name="floatstyle"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$floatstyle != ''"> +      <xsl:call-template name="floater"> +        <xsl:with-param name="position" select="$floatstyle"/> +        <xsl:with-param name="content" select="$equation"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$equation"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="figure/title"></xsl:template> +<xsl:template match="figure/titleabbrev"></xsl:template> +<xsl:template match="table/title"></xsl:template> +<xsl:template match="table/titleabbrev"></xsl:template> +<xsl:template match="table/textobject"></xsl:template> +<xsl:template match="example/title"></xsl:template> +<xsl:template match="example/titleabbrev"></xsl:template> +<xsl:template match="equation/title"></xsl:template> +<xsl:template match="equation/titleabbrev"></xsl:template> + +<xsl:template match="informalfigure"> +  <xsl:call-template name="informal.object"/> +</xsl:template> + +<xsl:template match="informalexample"> +  <xsl:call-template name="informal.object"/> +</xsl:template> + +<xsl:template match="informaltable/textobject"></xsl:template> + +<xsl:template match="informalequation"> +  <xsl:call-template name="informal.object"/> +</xsl:template> + +<xsl:template name="floatstyle"> +  <xsl:if test="(@float and @float != '0') or @floatstyle != ''"> +    <xsl:choose> +      <xsl:when test="@floatstyle != ''"> +        <xsl:value-of select="@floatstyle"/> +      </xsl:when> +      <xsl:when test="@float = '1'"> +        <xsl:value-of select="$default.float.class"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="@float"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/glossary.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/glossary.xsl new file mode 100644 index 0000000..163cba0 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/glossary.xsl @@ -0,0 +1,1139 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY % common.entities SYSTEM "../common/entities.ent"> +%common.entities; +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: glossary.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="glossary"> +  <xsl:call-template name="make-glossary"/> +</xsl:template> + +<xsl:template match="glossdiv/title"/> +<xsl:template match="glossdiv/subtitle"/> +<xsl:template match="glossdiv/titleabbrev"/> + +<!-- ==================================================================== --> + +<xsl:template name="make-glossary"> +  <xsl:param name="divs" select="glossdiv"/> +  <xsl:param name="entries" select="glossentry"/> +  <xsl:param name="preamble" select="*[not(self::title +                                           or self::subtitle +                                           or self::glossdiv +                                           or self::glossentry)]"/> + +  &setup-language-variable; + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_glossary-presentation"/> +  </xsl:variable> + +  <xsl:variable name="term-width"> +    <xsl:call-template name="pi.dbfo_glossterm-width"/> +  </xsl:variable> + +  <xsl:variable name="width"> +    <xsl:choose> +      <xsl:when test="$term-width = ''"> +        <xsl:value-of select="$glossterm.width"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$term-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="glossary.titlepage"/> +  </fo:block> + +  <xsl:if test="$preamble"> +    <xsl:apply-templates select="$preamble"/> +  </xsl:if> + +  <xsl:choose> +    <xsl:when test="$presentation = 'list'"> +      <xsl:apply-templates select="$divs" mode="glossary.as.list"> +        <xsl:with-param name="width" select="$width"/> +      </xsl:apply-templates> +      <xsl:if test="$entries"> +        <fo:list-block provisional-distance-between-starts="{$width}" +                       provisional-label-separation="{$glossterm.separation}" +                       xsl:use-attribute-sets="normal.para.spacing"> +          <xsl:choose> +            <xsl:when test="$glossary.sort != 0"> +              <xsl:apply-templates select="$entries" mode="glossary.as.list"> +                <xsl:sort lang="{$language}" +                          select="translate(glossterm, $lowercase,  +                                            $uppercase)"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="$entries" mode="glossary.as.list"/> +            </xsl:otherwise> +          </xsl:choose> +        </fo:list-block> +      </xsl:if> +    </xsl:when> +    <xsl:when test="$presentation = 'blocks'"> +      <xsl:apply-templates select="$divs" mode="glossary.as.blocks"/> +      <xsl:choose> +        <xsl:when test="$glossary.sort != 0"> +          <xsl:apply-templates select="$entries" mode="glossary.as.blocks"> +            <xsl:sort lang="{$language}" +                      select="translate(glossterm, $lowercase,  +                                        $uppercase)"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="$glossary.as.blocks != 0"> +      <xsl:apply-templates select="$divs" mode="glossary.as.blocks"/> +      <xsl:choose> +        <xsl:when test="$glossary.sort != 0"> +          <xsl:apply-templates select="$entries" mode="glossary.as.blocks"> +            <xsl:sort lang="{$language}" +                      select="translate(glossterm, $lowercase,  +                                        $uppercase)"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="$divs" mode="glossary.as.list"> +        <xsl:with-param name="width" select="$width"/> +      </xsl:apply-templates> +      <xsl:if test="$entries"> +        <fo:list-block provisional-distance-between-starts="{$width}" +                       provisional-label-separation="{$glossterm.separation}" +                       xsl:use-attribute-sets="normal.para.spacing"> +          <xsl:choose> +            <xsl:when test="$glossary.sort != 0"> +              <xsl:apply-templates select="$entries" mode="glossary.as.list"> +                <xsl:sort lang="{$language}" +                          select="translate(glossterm, $lowercase,  +                                            $uppercase)"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="$entries" mode="glossary.as.list"/> +            </xsl:otherwise> +          </xsl:choose> +        </fo:list-block> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="book/glossary|part/glossary|/glossary" priority="2"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> + +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> +     +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <xsl:call-template name="make-glossary"/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="glossary/glossaryinfo"></xsl:template> +<xsl:template match="glossary/info"></xsl:template> +<xsl:template match="glossary/title"></xsl:template> +<xsl:template match="glossary/subtitle"></xsl:template> +<xsl:template match="glossary/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="glosslist"> +  &setup-language-variable; + +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_glosslist-presentation"/> +  </xsl:variable> + +  <xsl:variable name="term-width"> +    <xsl:call-template name="pi.dbfo_glossterm-width"/> +  </xsl:variable> + +  <xsl:variable name="width"> +    <xsl:choose> +      <xsl:when test="$term-width = ''"> +        <xsl:value-of select="$glossterm.width"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$term-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title or info/title"> +    <xsl:apply-templates select="(title|info/title)[1]" mode="list.title.mode"/> +  </xsl:if> + +  <xsl:choose> +    <xsl:when test="$presentation = 'list'"> +      <fo:list-block provisional-distance-between-starts="{$width}" +                     provisional-label-separation="{$glossterm.separation}" +                     xsl:use-attribute-sets="normal.para.spacing"> +        <xsl:choose> +          <xsl:when test="$glossary.sort != 0"> +            <xsl:apply-templates select="glossentry" mode="glossary.as.list"> +              <xsl:sort lang="{$language}" +                        select="translate(glossterm, $lowercase,  +                                          $uppercase)"/> +            </xsl:apply-templates> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="glossentry" mode="glossary.as.list"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:list-block> +    </xsl:when> +    <xsl:when test="$presentation = 'blocks'"> +      <xsl:choose> +        <xsl:when test="$glossary.sort != 0"> +          <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"> +            <xsl:sort lang="{$language}" +                      select="translate(glossterm, $lowercase,  +                                        $uppercase)"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:when test="$glosslist.as.blocks != 0"> +      <xsl:choose> +        <xsl:when test="$glossary.sort != 0"> +          <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"> +            <xsl:sort lang="{$language}" +                      select="translate(glossterm, $lowercase,  +                                        $uppercase)"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="glossentry" mode="glossary.as.blocks"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block provisional-distance-between-starts="{$width}" +                     provisional-label-separation="{$glossterm.separation}" +                     xsl:use-attribute-sets="normal.para.spacing"> +        <xsl:choose> +          <xsl:when test="$glossary.sort != 0"> +            <xsl:apply-templates select="glossentry" mode="glossary.as.list"> +              <xsl:sort lang="{$language}" +                        select="translate(glossterm, $lowercase,  +                                          $uppercase)"/> +            </xsl:apply-templates> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="glossentry" mode="glossary.as.list"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Glossary collection --> + +<xsl:template match="glossary[@role='auto']" priority="2"> +  <xsl:variable name="collection" select="document($glossary.collection, .)"/> +  <xsl:if test="$glossary.collection = ''"> +    <xsl:message> +      <xsl:text>Warning: processing automatic glossary </xsl:text> +      <xsl:text>without a glossary.collection file.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="not($collection) and $glossary.collection != ''"> +    <xsl:message> +      <xsl:text>Warning: processing automatic glossary but unable to </xsl:text> +      <xsl:text>open glossary.collection file '</xsl:text> +      <xsl:value-of select="$glossary.collection"/> +      <xsl:text>'</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:call-template name="make-auto-glossary"/> +</xsl:template> + +<xsl:template name="make-auto-glossary"> +  <xsl:param name="collection" select="document($glossary.collection, .)"/> +  <xsl:param name="terms" select="//glossterm[not(parent::glossdef)]|//firstterm"/> +  <xsl:param name="preamble" select="*[not(self::title +                                           or self::subtitle +                                           or self::glossdiv +                                           or self::glossentry)]"/> + +  &setup-language-variable; + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_glossary-presentation"/> +  </xsl:variable> + +  <xsl:variable name="term-width"> +    <xsl:call-template name="pi.dbfo_glossterm-width"/> +  </xsl:variable> + +  <xsl:variable name="width"> +    <xsl:choose> +      <xsl:when test="$term-width = ''"> +        <xsl:value-of select="$glossterm.width"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$term-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="$glossary.collection = ''"> +    <xsl:message> +      <xsl:text>Warning: processing automatic glossary </xsl:text> +      <xsl:text>without a glossary.collection file.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <fo:block id="{$id}"> +    <xsl:call-template name="glossary.titlepage"/> +  </fo:block> + +  <xsl:if test="$preamble"> +    <xsl:apply-templates select="$preamble"/> +  </xsl:if> + +  <xsl:choose> +    <xsl:when test="glossdiv and $collection//glossdiv"> +      <xsl:for-each select="$collection//glossdiv"> +        <!-- first see if there are any in this div --> +        <xsl:variable name="exist.test"> +          <xsl:for-each select="glossentry"> +            <xsl:variable name="cterm" select="glossterm"/> +            <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +              <xsl:value-of select="glossterm"/> +            </xsl:if> +          </xsl:for-each> +        </xsl:variable> + +        <xsl:if test="$exist.test != ''"> +          <xsl:choose> +            <xsl:when test="$presentation = 'list'"> +              <xsl:apply-templates select="." mode="auto-glossary-as-list"> +                <xsl:with-param name="width" select="$width"/> +                <xsl:with-param name="terms" select="$terms"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:when test="$presentation = 'blocks'"> +              <xsl:apply-templates select="." mode="auto-glossary-as-blocks"> +                <xsl:with-param name="terms" select="$terms"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:when test="$glossary.as.blocks != 0"> +              <xsl:apply-templates select="." mode="auto-glossary-as-blocks"> +                <xsl:with-param name="terms" select="$terms"/> +              </xsl:apply-templates> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="." mode="auto-glossary-as-list"> +                <xsl:with-param name="width" select="$width"/> +                <xsl:with-param name="terms" select="$terms"/> +              </xsl:apply-templates> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:if> +      </xsl:for-each> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$presentation = 'list'"> +          <fo:list-block provisional-distance-between-starts="{$width}" +                         provisional-label-separation="{$glossterm.separation}" +                         xsl:use-attribute-sets="normal.para.spacing"> +            <xsl:choose> +              <xsl:when test="$glossary.sort != 0"> +                <xsl:for-each select="$collection//glossentry"> +                  <xsl:sort lang="{$language}" +                            select="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-as-list"/> +                  </xsl:if> +                </xsl:for-each> +              </xsl:when> +              <xsl:otherwise> +                <xsl:for-each select="$collection//glossentry"> +                  <xsl:variable name="cterm" select="glossterm"/> +                  <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +                    <xsl:apply-templates select="."  +                                         mode="auto-glossary-as-list"/> +                  </xsl:if> +                </xsl:for-each> +              </xsl:otherwise> +            </xsl:choose> +          </fo:list-block> +        </xsl:when> +        <xsl:when test="$presentation = 'blocks' or +                        $glossary.as.blocks != 0"> +          <xsl:choose> +            <xsl:when test="$glossary.sort != 0"> +              <xsl:for-each select="$collection//glossentry"> +                <xsl:sort lang="{$language}" +                          select="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-as-blocks"/> +                </xsl:if> +              </xsl:for-each> +            </xsl:when> +            <xsl:otherwise> +              <xsl:for-each select="$collection//glossentry"> +                <xsl:variable name="cterm" select="glossterm"/> +                <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +                  <xsl:apply-templates select="."  +                                       mode="auto-glossary-as-blocks"/> +                </xsl:if> +              </xsl:for-each> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +          <fo:list-block provisional-distance-between-starts="{$width}" +                         provisional-label-separation="{$glossterm.separation}" +                         xsl:use-attribute-sets="normal.para.spacing"> +            <xsl:choose> +              <xsl:when test="$glossary.sort != 0"> +                <xsl:for-each select="$collection//glossentry"> +                  <xsl:sort lang="{$language}" +                            select="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-as-list"/> +                  </xsl:if> +                </xsl:for-each> +              </xsl:when> +              <xsl:otherwise> +                <xsl:for-each select="$collection//glossentry"> +                  <xsl:variable name="cterm" select="glossterm"/> +                  <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +                    <xsl:apply-templates select="."  +                                         mode="auto-glossary-as-list"/> +                  </xsl:if> +                </xsl:for-each> +              </xsl:otherwise> +            </xsl:choose> +          </fo:list-block> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="book/glossary[@role='auto']| +                     part/glossary[@role='auto']| +                     /glossary[@role='auto']" priority="2.5"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <xsl:if test="$glossary.collection = ''"> +    <xsl:message> +      <xsl:text>Warning: processing automatic glossary </xsl:text> +      <xsl:text>without a glossary.collection file.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <xsl:call-template name="make-auto-glossary"/> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="glossdiv" mode="auto-glossary-as-list"> +  <xsl:param name="width" select="$glossterm.width"/> +  <xsl:param name="terms" select="."/> + +  &setup-language-variable; + +  <xsl:variable name="preamble" +                select="*[not(self::title +                            or self::subtitle +                            or self::glossentry)]"/> + +  <xsl:call-template name="glossdiv.titlepage"/> + +  <xsl:apply-templates select="$preamble"/> + +  <fo:list-block provisional-distance-between-starts="{$width}" +                 provisional-label-separation="{$glossterm.separation}" +                 xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:choose> +      <xsl:when test="$glossary.sort != 0"> +        <xsl:for-each select="glossentry"> +          <xsl:sort lang="{$language}" +                    select="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-as-list"/> +          </xsl:if> +        </xsl:for-each> +      </xsl:when> +      <xsl:otherwise> +        <xsl:for-each select="glossentry"> +          <xsl:variable name="cterm" select="glossterm"/> +          <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +            <xsl:apply-templates select="." mode="auto-glossary-as-list"/> +          </xsl:if> +        </xsl:for-each> +      </xsl:otherwise> +    </xsl:choose> +  </fo:list-block> +</xsl:template> + +<xsl:template match="glossentry" mode="auto-glossary-as-list"> +  <xsl:apply-templates select="." mode="glossary.as.list"/> +</xsl:template> + +<xsl:template match="glossdiv" mode="auto-glossary-as-blocks"> +  <xsl:param name="terms" select="."/> + +  &setup-language-variable; + +  <xsl:variable name="preamble" +                select="*[not(self::title +                            or self::subtitle +                            or self::glossentry)]"/> + +  <xsl:call-template name="glossdiv.titlepage"/> + +  <xsl:apply-templates select="$preamble"/> + +  <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-as-blocks"/> +        </xsl:if> +      </xsl:for-each> +    </xsl:when> +    <xsl:otherwise> +      <xsl:for-each select="glossentry"> +        <xsl:variable name="cterm" select="glossterm"/> +        <xsl:if test="$terms[@baseform = $cterm or . = $cterm]"> +          <xsl:apply-templates select="." mode="auto-glossary-as-blocks"/> +        </xsl:if> +      </xsl:for-each> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<xsl:template match="glossentry" mode="auto-glossary-as-blocks"> +  <xsl:apply-templates select="." mode="glossary.as.blocks"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Format glossary as a list --> + +<xsl:template match="glossdiv" mode="glossary.as.list"> +  <xsl:param name="width" select="$glossterm.width"/> + +  &setup-language-variable; + +  <xsl:variable name="entries" select="glossentry"/> + +  <xsl:variable name="preamble" +                select="*[not(self::title +                            or self::subtitle +                            or self::glossentry)]"/> + +  <xsl:call-template name="glossdiv.titlepage"/> + +  <xsl:apply-templates select="$preamble"/> + +  <fo:list-block provisional-distance-between-starts="{$width}" +                 provisional-label-separation="{$glossterm.separation}" +                 xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:choose> +      <xsl:when test="$glossary.sort != 0"> +        <xsl:apply-templates select="$entries" mode="glossary.as.list"> +          <xsl:sort lang="{$language}" +                    select="translate(glossterm, $lowercase,  +                                      $uppercase)"/> +        </xsl:apply-templates> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates select="$entries" mode="glossary.as.list"/> +      </xsl:otherwise> +    </xsl:choose> +  </fo:list-block> +</xsl:template> + +<!-- +GlossEntry ::= +  GlossTerm, Acronym?, Abbrev?, +  (IndexTerm)*, +  RevHistory?, +  (GlossSee | GlossDef+) +--> + +<xsl:template match="glossentry" mode="glossary.as.list"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:list-item xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:call-template name="anchor"> +      <xsl:with-param name="conditional"> +        <xsl:choose> +          <xsl:when test="$glossterm.auto.link != 0 +                          or $glossary.collection != ''">0</xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> + +    <fo:list-item-label end-indent="label-end()"> +      <fo:block> +        <xsl:choose> +          <xsl:when test="$glossentry.show.acronym = 'primary'"> +            <xsl:choose> +              <xsl:when test="acronym|abbrev"> +                <xsl:apply-templates select="acronym|abbrev"  +                                     mode="glossary.as.list"/> +                <xsl:text> (</xsl:text> +                <xsl:apply-templates select="glossterm"  +                                     mode="glossary.as.list"/> +                <xsl:text>)</xsl:text> +              </xsl:when> +              <xsl:otherwise> +                <xsl:apply-templates select="glossterm"  +                                     mode="glossary.as.list"/> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:when> + +          <xsl:when test="$glossentry.show.acronym = 'yes'"> +            <xsl:apply-templates select="glossterm" mode="glossary.as.list"/> + +            <xsl:if test="acronym|abbrev"> +              <xsl:text> (</xsl:text> +              <xsl:apply-templates select="acronym|abbrev"  +                                   mode="glossary.as.list"/> +              <xsl:text>)</xsl:text> +            </xsl:if> +          </xsl:when> + +          <xsl:otherwise> +            <xsl:apply-templates select="glossterm" mode="glossary.as.list"/> +          </xsl:otherwise> +        </xsl:choose> +        <xsl:apply-templates select="indexterm"/> +      </fo:block> +    </fo:list-item-label> + +    <fo:list-item-body start-indent="body-start()"> +      <xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.list"/> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="glossentry/glossterm" mode="glossary.as.list"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:inline id="{$id}"> +    <xsl:apply-templates/> +  </fo:inline> +  <xsl:if test="following-sibling::glossterm">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/acronym" mode="glossary.as.list"> +  <xsl:apply-templates/> +  <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/abbrev" mode="glossary.as.list"> +  <xsl:apply-templates/> +  <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/revhistory" mode="glossary.as.list"> +</xsl:template> + +<xsl:template match="glossentry/glosssee" mode="glossary.as.list"> +  <xsl:variable name="otherterm" select="@otherterm"/> +  <xsl:variable name="targets" select="key('id', $otherterm)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <fo:block> +    <xsl:variable name="template"> +      <xsl:call-template name="gentext.template"> +        <xsl:with-param name="context" select="'glossary'"/> +        <xsl:with-param name="name" select="'see'"/> +      </xsl:call-template> +    </xsl:variable> +    <xsl:variable name="title"> +      <xsl:choose> +        <xsl:when test="$target"> +          <fo:basic-link internal-destination="{$otherterm}" +                         xsl:use-attribute-sets="xref.properties"> +            <xsl:apply-templates select="$target" mode="xref-to"/> +          </fo:basic-link> +        </xsl:when> +        <xsl:when test="$otherterm != '' and not($target)"> +          <xsl:message> +            <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text> +            <xsl:value-of select="$otherterm"/> +          </xsl:message> +          <xsl:apply-templates mode="glossary.as.list"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates mode="glossary.as.list"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:call-template name="substitute-markup"> +      <xsl:with-param name="template" select="$template"/> +      <xsl:with-param name="title" select="$title"/> +    </xsl:call-template> + +    <xsl:text>.</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="glossentry/glossdef" mode="glossary.as.list"> +  <xsl:apply-templates select="*[local-name(.) != 'glossseealso']"/> +  <xsl:if test="glossseealso"> +    <fo:block> +      <xsl:variable name="template"> +        <xsl:call-template name="gentext.template"> +          <xsl:with-param name="context" select="'glossary'"/> +          <xsl:with-param name="name" select="'seealso'"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:variable name="title"> +        <xsl:apply-templates select="glossseealso" mode="glossary.as.list"/> +      </xsl:variable> +      <xsl:call-template name="substitute-markup"> +        <xsl:with-param name="template" select="$template"/> +        <xsl:with-param name="title" select="$title"/> +      </xsl:call-template> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]" +              mode="glossary.as.list"> +  <fo:block> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="glossseealso" mode="glossary.as.list"> +  <xsl:variable name="otherterm" select="@otherterm"/> +  <xsl:variable name="targets" select="key('id', $otherterm)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:choose> +    <xsl:when test="$target"> +      <fo:basic-link internal-destination="{$otherterm}" +                     xsl:use-attribute-sets="xref.properties"> +        <xsl:apply-templates select="$target" mode="xref-to"/> +      </fo:basic-link> +    </xsl:when> +    <xsl:when test="$otherterm != '' and not($target)"> +      <xsl:message> +        <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text> +        <xsl:value-of select="$otherterm"/> +      </xsl:message> +      <xsl:apply-templates mode="glossary.as.list"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="glossary.as.list"/> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="position() = last()"> +      <xsl:text>.</xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>, </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Format glossary blocks --> + +<xsl:template match="glossdiv" mode="glossary.as.blocks"> +  &setup-language-variable; +  <xsl:variable name="entries" select="glossentry"/> +  <xsl:variable name="preamble" +                select="*[not(self::title +                            or self::subtitle +                            or self::glossentry)]"/> + +  <xsl:call-template name="glossdiv.titlepage"/> + +  <xsl:apply-templates select="$preamble"/> + +  <xsl:choose> +    <xsl:when test="$glossary.sort != 0"> +      <xsl:apply-templates select="$entries" mode="glossary.as.blocks"> +        <xsl:sort lang="{$language}" +                  select="translate(glossterm, $lowercase,  +                                    $uppercase)"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="$entries" mode="glossary.as.blocks"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- +GlossEntry ::= +  GlossTerm, Acronym?, Abbrev?, +  (IndexTerm)*, +  RevHistory?, +  (GlossSee | GlossDef+) +--> + +<xsl:template match="glossentry" mode="glossary.as.blocks"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block xsl:use-attribute-sets="list.item.spacing" +           keep-with-next.within-column="always"  +           keep-together.within-column="always"> +    <xsl:call-template name="anchor"> +      <xsl:with-param name="conditional"> +        <xsl:choose> +          <xsl:when test="$glossterm.auto.link != 0 +                          or $glossary.collection != ''">0</xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> + +    <xsl:choose> +      <xsl:when test="$glossentry.show.acronym = 'primary'"> +        <xsl:choose> +          <xsl:when test="acronym|abbrev"> +            <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/> +            <xsl:text> (</xsl:text> +            <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/> +            <xsl:text>)</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:when> + +      <xsl:when test="$glossentry.show.acronym = 'yes'"> +        <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/> + +        <xsl:if test="acronym|abbrev"> +          <xsl:text> (</xsl:text> +          <xsl:apply-templates select="acronym|abbrev" mode="glossary.as.blocks"/> +          <xsl:text>)</xsl:text> +        </xsl:if> +      </xsl:when> + +      <xsl:otherwise> +        <xsl:apply-templates select="glossterm" mode="glossary.as.blocks"/> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:apply-templates select="indexterm"/> +  </fo:block> + +  <fo:block margin-left="0.25in"> +    <xsl:apply-templates select="glosssee|glossdef" mode="glossary.as.blocks"/> +  </fo:block> +</xsl:template> + +<xsl:template match="glossentry/glossterm" mode="glossary.as.blocks"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:inline id="{$id}"> +    <xsl:apply-templates/> +  </fo:inline> +  <xsl:if test="following-sibling::glossterm">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/acronym" mode="glossary.as.blocks"> +  <xsl:apply-templates/> +  <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/abbrev" mode="glossary.as.blocks"> +  <xsl:apply-templates/> +  <xsl:if test="following-sibling::acronym|following-sibling::abbrev">, </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/glosssee" mode="glossary.as.blocks"> +  <xsl:variable name="otherterm" select="@otherterm"/> +  <xsl:variable name="targets" select="key('id', $otherterm)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:variable name="template"> +    <xsl:call-template name="gentext.template"> +      <xsl:with-param name="context" select="'glossary'"/> +      <xsl:with-param name="name" select="'see'"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:variable name="title"> +    <xsl:choose> +      <xsl:when test="$target"> +        <fo:basic-link internal-destination="{$otherterm}" +                       xsl:use-attribute-sets="xref.properties"> +          <xsl:apply-templates select="$target" mode="xref-to"/> +        </fo:basic-link> +      </xsl:when> +      <xsl:when test="$otherterm != '' and not($target)"> +        <xsl:message> +          <xsl:text>Warning: glosssee @otherterm reference not found: </xsl:text> +          <xsl:value-of select="$otherterm"/> +        </xsl:message> +        <xsl:apply-templates mode="glossary.as.blocks"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates mode="glossary.as.blocks"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:call-template name="substitute-markup"> +    <xsl:with-param name="template" select="$template"/> +    <xsl:with-param name="title" select="$title"/> +  </xsl:call-template> + +  <xsl:text>.</xsl:text> +</xsl:template> + +<xsl:template match="glossentry/glossdef" mode="glossary.as.blocks"> +  <xsl:apply-templates select="*[local-name(.) != 'glossseealso']" +                       mode="glossary.as.blocks"/> +  <xsl:if test="glossseealso"> +    <fo:block> +      <xsl:variable name="template"> +        <xsl:call-template name="gentext.template"> +          <xsl:with-param name="context" select="'glossary'"/> +          <xsl:with-param name="name" select="'seealso'"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:variable name="title"> +        <xsl:apply-templates select="glossseealso" mode="glossary.as.blocks"/> +      </xsl:variable> +      <xsl:call-template name="substitute-markup"> +        <xsl:with-param name="template" select="$template"/> +        <xsl:with-param name="title" select="$title"/> +      </xsl:call-template> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="glossentry/glossdef/para[1]|glossentry/glossdef/simpara[1]" +              mode="glossary.as.blocks"> +  <fo:block> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- Handle any other glossdef content normally --> +<xsl:template match="*" mode="glossary.as.blocks"> +  <xsl:apply-templates select="." /> +</xsl:template> + +<xsl:template match="glossseealso" mode="glossary.as.blocks"> +  <xsl:variable name="otherterm" select="@otherterm"/> +  <xsl:variable name="targets" select="key('id', $otherterm)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:choose> +    <xsl:when test="$target"> +      <fo:basic-link internal-destination="{$otherterm}" +                     xsl:use-attribute-sets="xref.properties"> +        <xsl:apply-templates select="$target" mode="xref-to"/> +      </fo:basic-link> +    </xsl:when> +    <xsl:when test="$otherterm != '' and not($target)"> +      <xsl:message> +        <xsl:text>Warning: glossseealso @otherterm reference not found: </xsl:text> +        <xsl:value-of select="$otherterm"/> +      </xsl:message> +      <xsl:apply-templates mode="glossary.as.blocks"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates mode="glossary.as.blocks"/> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="position() = last()"> +      <xsl:text>.</xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>, </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/graphics.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/graphics.xsl new file mode 100644 index 0000000..b2bc0aa --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/graphics.xsl @@ -0,0 +1,637 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY lowercase "'abcdefghijklmnopqrstuvwxyz'"> +<!ENTITY uppercase "'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"> + ]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:xlink="http://www.w3.org/1999/xlink" +                xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory" +                xmlns:xtext="com.nwalsh.xalan.Text" +                xmlns:lxslt="http://xml.apache.org/xslt" +                exclude-result-prefixes="xlink stext xtext lxslt" +                extension-element-prefixes="stext xtext" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: graphics.xsl 8369 2007-09-09 08:55:14Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     Contributors: +     Colin Paul Adams, <colin@colina.demon.co.uk> +     Paul Grosso, <pgrosso@arbortext.com> + +     ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- Graphic format tests for the FO backend --> + +<xsl:param name="graphic.notations"> +  <!-- n.b. exactly one leading space, one trailing space, and one inter-word space --> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0"> +      <xsl:text> PNG PDF JPG JPEG linespecific </xsl:text> +    </xsl:when> +    <xsl:when test="$fop1.extensions != 0"> +      <xsl:text> BMP GIF TIFF SVG PNG EPS JPG JPEG linespecific </xsl:text> +    </xsl:when> +    <xsl:when test="$fop.extensions != 0"> +      <xsl:text> BMP GIF TIFF SVG PNG EPS JPG JPEG linespecific </xsl:text> +    </xsl:when> +    <xsl:when test="$arbortext.extensions != 0"> +      <xsl:text> PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP </xsl:text> +    </xsl:when> +    <xsl:when test="$xep.extensions != 0"> +      <xsl:text> SVG PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text> PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:template name="is.graphic.format"> +  <xsl:param name="format"/> +  <xsl:if test="contains($graphic.notations, concat(' ',$format,' '))">1</xsl:if> +</xsl:template> + +<xsl:param name="graphic.extensions"> +  <!-- n.b. exactly one leading space, one trailing space, and one inter-word space --> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0"> +      <xsl:text> png pdf jpg jpeg </xsl:text> +    </xsl:when> +    <xsl:when test="$fop1.extensions != 0"> +      <xsl:text> bmp gif tif tiff svg png pdf jpg jpeg eps </xsl:text> +    </xsl:when> +    <xsl:when test="$fop.extensions != 0"> +      <xsl:text> bmp gif tif tiff svg png pdf jpg jpeg eps </xsl:text> +    </xsl:when> +    <xsl:when test="$arbortext.extensions != 0"> +      <xsl:text> png pdf jpg jpeg gif tif tiff bmp </xsl:text> +    </xsl:when> +    <xsl:when test="$xep.extensions != 0"> +      <xsl:text> svg png pdf jpg jpeg gif tif tiff bmp eps </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text> svg png pdf jpg jpeg gif tif tiff bmp eps </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:template name="is.graphic.extension"> +  <xsl:param name="ext"/> +  <xsl:variable name="lcext" select="translate($ext, +                                       'ABCDEFGHIJKLMNOPQRSTUVWXYZ', +                                       'abcdefghijklmnopqrstuvwxyz')"/> + +  <xsl:if test="contains($graphic.extensions, +                         concat(' ', $lcext, ' '))">1</xsl:if> +</xsl:template> + +<xsl:template name="graphic.format.content-type"> +  <xsl:param name="format"/> +  <xsl:variable name="is.graphic.format"> +    <xsl:call-template name="is.graphic.format"> +      <xsl:with-param name="format" select="$format"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:if test="$is.graphic.format"> +    <xsl:choose> +      <xsl:when test="$format = ''"></xsl:when> +      <xsl:when test="$format = 'linespecific'"></xsl:when> +      <xsl:when test="$format = 'PS'">application/postscript</xsl:when> +      <xsl:when test="$format = 'PDF'">application/pdf</xsl:when> +      <xsl:when test="$format = 'PNG'">image/png</xsl:when> +      <xsl:when test="$format = 'SVG'">image/svg+xml</xsl:when> +      <xsl:when test="$format = 'JPG'">image/jpeg</xsl:when> +      <xsl:when test="$format = 'GIF87a'">image/gif</xsl:when> +      <xsl:when test="$format = 'GIF89a'">image/gif</xsl:when> +      <xsl:otherwise> +          <xsl:value-of select="concat('image/',  +            translate($format, &uppercase;, &lowercase;))"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:if> +</xsl:template> + + +<!-- ==================================================================== --> + +<xsl:template match="screenshot"> +  <fo:block> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="screeninfo"> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Override these templates for FO --> +<!-- ==================================================================== --> + +<xsl:template name="process.image"> +  <!-- When this template is called, the current node should be  --> +  <!-- a graphic, inlinegraphic, imagedata, or videodata. All    --> +  <!-- those elements have the same set of attributes, so we can --> +  <!-- handle them all in one place.                             --> + +  <xsl:variable name="scalefit"> +    <xsl:choose> +      <xsl:when test="$ignore.image.scaling != 0">0</xsl:when> +      <xsl:when test="@contentwidth">0</xsl:when> +      <xsl:when test="@contentdepth and  +                      @contentdepth != '100%'">0</xsl:when> +      <xsl:when test="@scale">0</xsl:when> +      <xsl:when test="@scalefit"><xsl:value-of select="@scalefit"/></xsl:when> +      <xsl:when test="@width or @depth">1</xsl:when> +      <xsl:otherwise>0</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="scale"> +    <xsl:choose> +      <xsl:when test="$ignore.image.scaling != 0">0</xsl:when> +      <xsl:when test="@contentwidth or @contentdepth">1.0</xsl:when> +      <xsl:when test="@scale"> +        <xsl:value-of select="@scale div 100.0"/> +      </xsl:when> +      <xsl:otherwise>1.0</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="filename"> +    <xsl:choose> +      <xsl:when test="local-name(.) = 'graphic' +                      or local-name(.) = 'inlinegraphic'"> +        <!-- handle legacy graphic and inlinegraphic by new template -->  +        <xsl:call-template name="mediaobject.filename"> +          <xsl:with-param name="object" select="."/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <!-- imagedata, videodata, audiodata --> +        <xsl:call-template name="mediaobject.filename"> +          <xsl:with-param name="object" select=".."/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="content-type"> +    <xsl:if test="@format"> +      <xsl:call-template name="graphic.format.content-type"> +        <xsl:with-param name="format" select="@format"/> +      </xsl:call-template> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="bgcolor"> +    <xsl:call-template name="pi.dbfo_background-color"> +      <xsl:with-param name="node" select=".."/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:external-graphic> +    <xsl:attribute name="src"> +      <xsl:call-template name="fo-external-image"> +        <xsl:with-param name="filename"> +          <xsl:if test="$img.src.path != '' and +                        not(starts-with($filename, '/')) and +                        not(contains($filename, '://'))"> +            <xsl:value-of select="$img.src.path"/> +          </xsl:if> +          <xsl:value-of select="$filename"/> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="width"> +      <xsl:choose> +        <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> +        <xsl:when test="contains(@width,'%')"> +          <xsl:value-of select="@width"/> +        </xsl:when> +        <xsl:when test="@width and not(@width = '')"> +          <xsl:call-template name="length-spec"> +            <xsl:with-param name="length" select="@width"/> +            <xsl:with-param name="default.units" select="'px'"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:when test="not(@depth) and $default.image.width != ''"> +          <xsl:call-template name="length-spec"> +            <xsl:with-param name="length" select="$default.image.width"/> +            <xsl:with-param name="default.units" select="'px'"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise>auto</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> + +    <xsl:attribute name="height"> +      <xsl:choose> +        <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> +        <xsl:when test="contains(@depth,'%')"> +          <xsl:value-of select="@depth"/> +        </xsl:when> +        <xsl:when test="@depth"> +          <xsl:call-template name="length-spec"> +            <xsl:with-param name="length" select="@depth"/> +            <xsl:with-param name="default.units" select="'px'"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise>auto</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> + +    <xsl:attribute name="content-width"> +      <xsl:choose> +        <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> +        <xsl:when test="contains(@contentwidth,'%')"> +          <xsl:value-of select="@contentwidth"/> +        </xsl:when> +        <xsl:when test="@contentwidth"> +          <xsl:call-template name="length-spec"> +            <xsl:with-param name="length" select="@contentwidth"/> +            <xsl:with-param name="default.units" select="'px'"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:when test="number($scale) != 1.0"> +          <xsl:value-of select="$scale * 100"/> +          <xsl:text>%</xsl:text> +        </xsl:when> +        <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when> +        <xsl:otherwise>auto</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> + +    <xsl:attribute name="content-height"> +      <xsl:choose> +        <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when> +        <xsl:when test="contains(@contentdepth,'%')"> +          <xsl:value-of select="@contentdepth"/> +        </xsl:when> +        <xsl:when test="@contentdepth"> +          <xsl:call-template name="length-spec"> +            <xsl:with-param name="length" select="@contentdepth"/> +            <xsl:with-param name="default.units" select="'px'"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:when test="number($scale) != 1.0"> +          <xsl:value-of select="$scale * 100"/> +          <xsl:text>%</xsl:text> +        </xsl:when> +        <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when> +        <xsl:otherwise>auto</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> + +    <xsl:if test="$content-type != ''"> +      <xsl:attribute name="content-type"> +        <xsl:value-of select="concat('content-type:',$content-type)"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:if test="$bgcolor != ''"> +      <xsl:attribute name="background-color"> +        <xsl:value-of select="$bgcolor"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:if test="@align"> +      <xsl:attribute name="text-align"> +        <xsl:value-of select="@align"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:if test="@valign"> +      <xsl:attribute name="display-align"> +        <xsl:choose> +          <xsl:when test="@valign = 'top'">before</xsl:when> +          <xsl:when test="@valign = 'middle'">center</xsl:when> +          <xsl:when test="@valign = 'bottom'">after</xsl:when> +          <xsl:otherwise>auto</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +  </fo:external-graphic> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="graphic"> +  <xsl:choose> +    <xsl:when test="parent::inlineequation"> +      <xsl:call-template name="process.image"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:block> +        <xsl:if test="@align"> +          <xsl:attribute name="text-align"> +            <xsl:value-of select="@align"/> +          </xsl:attribute> +        </xsl:if> +        <xsl:call-template name="process.image"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="inlinegraphic"> +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:variable name="filename"> +    <xsl:choose> +      <xsl:when test="@entityref"> +        <xsl:value-of select="unparsed-entity-uri(@entityref)"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates select="@fileref"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="@format='linespecific'"> +      <xsl:choose> +        <xsl:when test="$use.extensions != '0' +                        and $textinsert.extension != '0'"> +          <xsl:choose> +            <xsl:when test="contains($vendor, 'SAXON')"> +              <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/> +            </xsl:when> +            <xsl:when test="contains($vendor, 'Apache Software Foundation')"> +              <xtext:insertfile href="{$filename}"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:message terminate="yes"> +                <xsl:text>Don't know how to insert files with </xsl:text> +                <xsl:value-of select="$vendor"/> +              </xsl:message> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +	<xsl:otherwise> +	  <xsl:message terminate="yes"> +	    <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/> +	    <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>  +	  </xsl:message> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="process.image"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="mediaobject|mediaobjectco"> + +  <xsl:variable name="olist" select="imageobject|imageobjectco +                     |videoobject|audioobject +                     |textobject"/> + +  <xsl:variable name="object.index"> +    <xsl:call-template name="select.mediaobject.index"> +      <xsl:with-param name="olist" select="$olist"/> +      <xsl:with-param name="count" select="1"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="object" select="$olist[position() = $object.index]"/> + +  <xsl:variable name="align"> +    <xsl:value-of select="$object/descendant::imagedata[@align][1]/@align"/> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:if test="$align != '' "> +      <xsl:attribute name="text-align"> +        <xsl:value-of select="$align"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:apply-templates select="$object"/> +    <xsl:apply-templates select="caption"/> +  </fo:block> +</xsl:template> + +<xsl:template match="inlinemediaobject"> +  <xsl:call-template name="select.mediaobject"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="imageobjectco"> +  <xsl:apply-templates select="imageobject"/> +  <xsl:apply-templates select="calloutlist"/> +</xsl:template> + +<xsl:template match="imageobject"> +  <xsl:choose> +    <xsl:when test="imagedata"> +      <xsl:apply-templates select="imagedata"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:instream-foreign-object> +        <xsl:apply-templates mode="copy-all"/> +      </fo:instream-foreign-object> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="copy-all"> +  <xsl:copy> +    <xsl:for-each select="@*"> +      <xsl:copy/> +    </xsl:for-each> +    <xsl:apply-templates mode="copy-all"/> +  </xsl:copy> +</xsl:template> + +<xsl:template match="text()|comment()|processing-instruction()" mode="copy-all"> +  <xsl:copy/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="imagedata"> +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:variable name="filename"> +    <xsl:call-template name="mediaobject.filename"> +      <xsl:with-param name="object" select=".."/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="@format='linespecific'"> +      <xsl:choose> +        <xsl:when test="$use.extensions != '0' +                        and $textinsert.extension != '0'"> +          <xsl:choose> +            <xsl:when test="contains($vendor, 'SAXON')"> +              <stext:insertfile href="{$filename}" encoding="{$textdata.default.encoding}"/> +            </xsl:when> +            <xsl:when test="contains($vendor, 'Apache Software Foundation')"> +              <xtext:insertfile href="{$filename}"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:message terminate="yes"> +                <xsl:text>Don't know how to insert files with </xsl:text> +                <xsl:value-of select="$vendor"/> +              </xsl:message> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +	  <xsl:message terminate="yes"> +	    <xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/> +	    <xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>  +	  </xsl:message> +	</xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="process.image"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="videoobject"> +  <xsl:apply-templates select="videodata"/> +</xsl:template> + +<xsl:template match="videodata"> +  <xsl:call-template name="process.image"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="audioobject"> +  <xsl:apply-templates select="audiodata"/> +</xsl:template> + +<xsl:template match="audiodata"> +  <xsl:call-template name="process.image"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="textobject"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="textdata"> +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:variable name="filename"> +    <xsl:choose> +      <xsl:when test="@entityref"> +        <xsl:value-of select="unparsed-entity-uri(@entityref)"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates select="@fileref"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="encoding"> +    <xsl:choose> +      <xsl:when test="@encoding"> +        <xsl:value-of select="@encoding"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$textdata.default.encoding"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$use.extensions != '0' +                    and $textinsert.extension != '0'"> +      <xsl:choose> +        <xsl:when test="element-available('stext:insertfile')"> +          <stext:insertfile href="{$filename}" encoding="{$encoding}"/> +        </xsl:when> +        <xsl:when test="element-available('xtext:insertfile')"> +          <xtext:insertfile href="{$filename}"/> +        </xsl:when> +	<xsl:otherwise> +	  <xsl:message terminate="yes"> +	    <xsl:text>Don't know how to insert files with </xsl:text> +	    <xsl:value-of select="$vendor"/> +	  </xsl:message> +	</xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message terminate="yes"> +	<xsl:text>Cannot insert </xsl:text><xsl:value-of select="$filename"/> +	<xsl:text>. Check use.extensions and textinsert.extension parameters.</xsl:text>  +      </xsl:message> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="caption"> +  <fo:block> +    <xsl:if test="@align = 'right' or @align = 'left' or @align='center'"> +      <xsl:attribute name="text-align"><xsl:value-of +                         select="@align"/></xsl:attribute> +    </xsl:if> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="fo-external-image"> +  <xsl:param name="filename"/> + +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0 +                    or $fop.extensions != 0"> +      <xsl:value-of select="$filename"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="concat('url(', $filename, ')')"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- Resolve xml:base attributes --> +<xsl:template match="@fileref"> +  <!-- need a check for absolute urls --> +  <xsl:choose> +    <xsl:when test="contains(., ':') or starts-with(.,'/')"> +      <!-- it has a uri scheme or starts with '/', so it is an absolute uri --> +      <xsl:value-of select="."/> +    </xsl:when> +    <xsl:when test="$keep.relative.image.uris != 0"> +      <!-- leave it alone --> +      <xsl:value-of select="."/> +    </xsl:when> +    <xsl:otherwise> +      <!-- its a relative uri --> +      <xsl:call-template name="relative-uri"> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/highlight.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/highlight.xsl new file mode 100644 index 0000000..0e3522f --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/highlight.xsl @@ -0,0 +1,57 @@ +<?xml version='1.0'?>
 +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 +		xmlns:fo="http://www.w3.org/1999/XSL/Format"
 +		xmlns:xslthl="http://xslthl.sf.net"
 +                exclude-result-prefixes="xslthl"
 +                version='1.0'>
 +
 +<!-- ********************************************************************
 +     $Id: highlight.xsl 8196 2007-07-05 21:18:33Z manuel $
 +     ********************************************************************
 +
 +     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'>
 +  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:string'>
 +  <fo:inline font-weight="bold" font-style="italic"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:comment'>
 +  <fo:inline font-style="italic"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:tag'>
 +  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:attribute'>
 +  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:value'>
 +  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>
 +</xsl:template>
 +
 +<!--
 +<xsl:template match='xslthl:html'>
 +  <span style='background:#AFF'><font color='blue'><xsl:apply-templates/></font></span>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:xslt'>
 +  <span style='background:#AAA'><font color='blue'><xsl:apply-templates/></font></span>
 +</xsl:template>
 +
 +<xsl:template match='xslthl:section'>
 +  <span style='background:yellow'><xsl:apply-templates/></span>
 +</xsl:template>
 +-->
 +
 +</xsl:stylesheet>
 +
 diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/htmltbl.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/htmltbl.xsl new file mode 100644 index 0000000..20e0f28 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/htmltbl.xsl @@ -0,0 +1,217 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version="1.0"> + +<!-- ******************************************************************** +     $Id: htmltbl.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This 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="th.style"> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +</xsl:attribute-set> + +<!-- Outputs an fo:table only, not the caption --> +<xsl:template match="table|informaltable" mode="htmlTable"> + +  <xsl:variable name="numcols"> +    <xsl:call-template name="widest-html-row"> +      <xsl:with-param name="rows" select=".//tr"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="prop-columns" +                select=".//col[contains(@width, '%')] | +                        .//colgroup[contains(@width, '%')]"/> + +  <xsl:variable name="table.width"> +    <xsl:call-template name="table.width"/> +  </xsl:variable> + +  <fo:table xsl:use-attribute-sets="table.table.properties"> +    <xsl:choose> +      <xsl:when test="$fop.extensions != 0 or +                      $passivetex.extensions != 0"> +        <xsl:attribute name="table-layout">fixed</xsl:attribute> +      </xsl:when> +    </xsl:choose> +    <xsl:attribute name="width"> +      <xsl:choose> +        <xsl:when test="@width"> +          <xsl:value-of select="@width"/> +        </xsl:when> +        <xsl:when test="$table.width"> +          <xsl:value-of select="$table.width"/> +        </xsl:when> +        <xsl:otherwise>100%</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> +    <xsl:call-template name="make-html-table-columns"> +      <xsl:with-param name="count" select="$numcols"/> +    </xsl:call-template> +    <xsl:apply-templates select="thead" mode="htmlTable"/> +    <xsl:apply-templates select="tfoot" mode="htmlTable"/> +    <xsl:choose> +      <xsl:when test="tbody"> +        <xsl:apply-templates select="tbody" mode="htmlTable"/> +      </xsl:when> +      <xsl:otherwise> +        <fo:table-body start-indent="0pt" end-indent="0pt"> +          <xsl:apply-templates select="tr" mode="htmlTable"/> +        </fo:table-body> +      </xsl:otherwise> +    </xsl:choose> +  </fo:table> + +</xsl:template> + +<xsl:template match="caption" mode="htmlTable"> +  <!-- Handled by formal.object.heading --> +</xsl:template> + +<xsl:template name="widest-html-row"> +  <xsl:param name="rows" select="''"/> +  <xsl:param name="count" select="0"/> +  <xsl:choose> +    <xsl:when test="count($rows) = 0"> +      <xsl:value-of select="$count"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$count > count($rows[1]/*)"> +          <xsl:call-template name="widest-html-row"> +            <xsl:with-param name="rows" select="$rows[position() > 1]"/> +            <xsl:with-param name="count" select="$count"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="widest-html-row"> +            <xsl:with-param name="rows" select="$rows[position() > 1]"/> +            <xsl:with-param name="count" select="count($rows[1]/*)"/> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="make-html-table-columns"> +  <xsl:param name="count" select="0"/> +  <xsl:param name="number" select="1"/> + +  <xsl:choose> +    <xsl:when test="col|colgroup/col"> +      <xsl:for-each select="col|colgroup/col"> +        <fo:table-column> +          <xsl:attribute name="column-number"> +            <xsl:number from="table|informaltable" level="any" format="1"/> +          </xsl:attribute> +          <xsl:if test="@width"> +            <xsl:attribute name="column-width"> +              <xsl:choose> +                <xsl:when test="$fop.extensions != 0 and  +                                contains(@width, '%')"> +                  <xsl:value-of select="concat('proportional-column-width(', +                                               substring-before(@width, '%'), +                                               ')')"/> +                </xsl:when> +                <xsl:otherwise> +                  <xsl:value-of select="@width"/> +                </xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </xsl:if> +        </fo:table-column> +      </xsl:for-each> +    </xsl:when> +    <xsl:when test="$fop.extensions != 0"> +      <xsl:if test="$number <= $count"> +        <fo:table-column column-number="{$number}" +                         column-width="{6.5 div $count}in"/> +        <xsl:call-template name="make-html-table-columns"> +          <xsl:with-param name="count" select="$count"/> +          <xsl:with-param name="number" select="$number + 1"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="tbody" mode="htmlTable"> +  <fo:table-body border-bottom-width="0.25pt" +                 border-bottom-style="solid" +                 border-bottom-color="black" +                 start-indent="0pt" +                 end-indent="0pt"> +    <xsl:apply-templates mode="htmlTable"/> +  </fo:table-body> +</xsl:template> + +<xsl:template match="td" mode="htmlTable"> +  <xsl:variable name="bgcolor"> +    <xsl:call-template name="pi.dbfo_bgcolor"/> +  </xsl:variable> +  <fo:table-cell xsl:use-attribute-sets="table.cell.padding"> +    <xsl:call-template name="table.cell.properties"> +      <xsl:with-param name="bgcolor.pi" select="$bgcolor"/> +      <xsl:with-param name="rowsep.inherit" select="0"/> +      <xsl:with-param name="colsep.inherit" select="0"/> +    </xsl:call-template> +    <fo:block> +      <xsl:call-template name="table.cell.block.properties"/> +      <xsl:apply-templates/> +    </fo:block> +  </fo:table-cell> +</xsl:template> + +<xsl:template match="tfoot" mode="htmlTable"> +  <fo:table-footer start-indent="0pt" +                   end-indent="0pt"> +    <xsl:apply-templates mode="htmlTable"/> +  </fo:table-footer> +</xsl:template> + +<xsl:template match="th" mode="htmlTable"> +  <xsl:variable name="bgcolor"> +    <xsl:call-template name="pi.dbfo_bgcolor"/> +  </xsl:variable> +  <fo:table-cell xsl:use-attribute-sets="th.style table.cell.padding"> +    <xsl:call-template name="table.cell.properties"> +      <xsl:with-param name="bgcolor.pi" select="$bgcolor"/> +      <xsl:with-param name="rowsep.inherit" select="0"/> +      <xsl:with-param name="colsep.inherit" select="0"/> +    </xsl:call-template> +    <fo:block> +      <xsl:call-template name="table.cell.block.properties"/> +      <xsl:apply-templates/> +    </fo:block> +  </fo:table-cell> +</xsl:template> + +<xsl:template match="thead" mode="htmlTable"> +  <fo:table-header border-bottom-width="0.25pt" +                   border-bottom-style="solid" +                   border-bottom-color="black" +                   start-indent="0pt" +                   end-indent="0pt" +                   font-weight="bold"> +    <xsl:apply-templates mode="htmlTable"/> +  </fo:table-header> +</xsl:template> + +<xsl:template match="tr" mode="htmlTable"> +  <fo:table-row> +    <xsl:call-template name="table.row.properties"/> +    <xsl:apply-templates mode="htmlTable"/> +  </fo:table-row> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/index.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/index.xsl new file mode 100644 index 0000000..b6819dd --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/index.xsl @@ -0,0 +1,479 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY primary   'normalize-space(concat(primary/@sortas, primary[not(@sortas)]))'> +<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas)]))'> +<!ENTITY tertiary  'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas)]))'> +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: index.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="index"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + + <xsl:if test="$generate.index != 0"> +  <xsl:choose> +    <xsl:when test="$make.index.markup != 0"> +      <fo:block> +        <xsl:call-template name="generate-index-markup"> +          <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/> +        </xsl:call-template> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}"> +        <xsl:call-template name="index.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +      <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0"> +        <xsl:call-template name="generate-index"> +          <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/> +        </xsl:call-template> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> + </xsl:if> +</xsl:template> + +<xsl:template match="book/index|part/index"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + + <xsl:if test="$generate.index != 0"> +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass"> +        <xsl:if test="$make.index.markup != 0">body</xsl:if> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}"> +        <xsl:call-template name="index.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +      <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0"> + +        <xsl:choose> +          <xsl:when test="$make.index.markup != 0"> +            <fo:block wrap-option='no-wrap' +                      white-space-collapse='false' +                      xsl:use-attribute-sets="monospace.verbatim.properties" +                      linefeed-treatment="preserve"> +              <xsl:call-template name="generate-index-markup"> +                <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/> +              </xsl:call-template> +            </fo:block> +          </xsl:when> +          <xsl:when test="indexentry|indexdiv/indexentry"> +            <xsl:apply-templates/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="generate-index"> +              <xsl:with-param name="scope" select="(ancestor::book|/)[last()]"/> +            </xsl:call-template> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:if> +    </fo:flow> +  </fo:page-sequence> + </xsl:if> +</xsl:template> + +<xsl:template match="setindex"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + + <xsl:if test="$generate.index != 0"> +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"> +      <xsl:with-param name="pageclass"> +        <xsl:choose> +          <xsl:when test="$make.index.markup != 0">body</xsl:when> +          <xsl:otherwise>index</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}"> +        <xsl:call-template name="setindex.titlepage"/> +      </fo:block> +      <xsl:apply-templates/> +      <xsl:if test="count(indexentry) = 0 and count(indexdiv) = 0"> + +        <xsl:choose> +          <xsl:when test="$make.index.markup != 0"> +            <fo:block wrap-option='no-wrap' +                      white-space-collapse='false' +                      xsl:use-attribute-sets="monospace.verbatim.properties" +                      linefeed-treatment="preserve"> +              <xsl:call-template name="generate-index-markup"> +                <xsl:with-param name="scope" select="/"/> +              </xsl:call-template> +            </fo:block> +          </xsl:when> +          <xsl:when test="indexentry|indexdiv/indexentry"> +            <xsl:apply-templates/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="generate-index"> +              <xsl:with-param name="scope" select="/"/> +            </xsl:call-template> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:if> +    </fo:flow> +  </fo:page-sequence> + </xsl:if> +</xsl:template> + +<xsl:template match="index/indexinfo"></xsl:template> +<xsl:template match="index/info"></xsl:template> +<xsl:template match="index/title"></xsl:template> +<xsl:template match="index/subtitle"></xsl:template> +<xsl:template match="index/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="indexdiv.title"> +  <xsl:param name="title"/> +  <xsl:param name="titlecontent"/> + +  <fo:block xsl:use-attribute-sets="index.div.title.properties"> +    <xsl:choose> +      <xsl:when test="$title"> +        <xsl:apply-templates select="." mode="object.title.markup"> +          <xsl:with-param name="allow-anchors" select="1"/> +        </xsl:apply-templates> +      </xsl:when> +      <xsl:otherwise> +        <xsl:copy-of select="$titlecontent"/> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<xsl:template match="indexdiv"> +  <fo:block> +    <xsl:call-template name="indexdiv.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="indexdiv/title"/> +<xsl:template match="indexdiv/subtitle"/> +<xsl:template match="indexdiv/titleabbrev"/> + +<!-- ==================================================================== --> + +<!-- Text used for distiguishing between normal and significant entries --> +<xsl:variable name="significant.flag">.tnacifingis</xsl:variable> + +<xsl:template match="indexterm" name="indexterm"> +  <!-- Temporal workaround for bug in AXF --> +  <xsl:variable name="wrapper.name"> +    <xsl:choose> +      <xsl:when test="$axf.extensions != 0"> +        <xsl:call-template name="inline.or.block"/> +      </xsl:when> +      <xsl:otherwise>fo:wrapper</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:element name="{$wrapper.name}"> +    <xsl:attribute name="id"> +      <xsl:call-template name="object.id"/> +    </xsl:attribute> +    <xsl:choose> +      <xsl:when test="$xep.extensions != 0"> +        <xsl:attribute name="rx:key"> +          <xsl:value-of select="&primary;"/> +          <xsl:if test="@significance='preferred'"><xsl:value-of select="$significant.flag"/></xsl:if> +          <xsl:if test="secondary"> +            <xsl:text>, </xsl:text> +            <xsl:value-of select="&secondary;"/> +          </xsl:if> +          <xsl:if test="tertiary"> +            <xsl:text>, </xsl:text> +            <xsl:value-of select="&tertiary;"/> +          </xsl:if> +        </xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:comment> +          <xsl:call-template name="comment-escape-string"> +            <xsl:with-param name="string"> +              <xsl:value-of select="primary"/> +              <xsl:if test="secondary"> +                <xsl:text>, </xsl:text> +                <xsl:value-of select="secondary"/> +              </xsl:if> +              <xsl:if test="tertiary"> +                <xsl:text>, </xsl:text> +                <xsl:value-of select="tertiary"/> +              </xsl:if> +            </xsl:with-param> +          </xsl:call-template> +        </xsl:comment> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:element> +</xsl:template> + +<xsl:template match="indexterm[@class='startofrange']"> +  <xsl:choose> +    <xsl:when test="$xep.extensions != 0"> +      <rx:begin-index-range> +        <xsl:call-template name="anchor"/> +        <xsl:attribute name="rx:key"> +          <xsl:value-of select="&primary;"/> +          <xsl:if test="@significance='preferred'"><xsl:value-of select="$significant.flag"/></xsl:if> +          <xsl:if test="secondary"> +            <xsl:text>, </xsl:text> +            <xsl:value-of select="&secondary;"/> +          </xsl:if> +          <xsl:if test="tertiary"> +            <xsl:text>, </xsl:text> +            <xsl:value-of select="&tertiary;"/> +          </xsl:if> +        </xsl:attribute> +      </rx:begin-index-range> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="indexterm"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="indexterm[@class='endofrange']"> +  <xsl:choose> +    <xsl:when test="$xep.extensions != 0"> +      <rx:end-index-range> +        <xsl:attribute name="ref-id"> +          <xsl:value-of select="@startref"/> +        </xsl:attribute> +      </rx:end-index-range> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="indexterm"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="indexentry"> +  <fo:block> +    <!-- don't process 'seeie's from here --> +    <xsl:apply-templates select="primaryie|secondaryie|tertiaryie|seealsoie"/> +  </fo:block> +</xsl:template> + +<xsl:template match="primaryie"> +  <fo:block> +    <xsl:apply-templates/> +    <xsl:if test="following-sibling::seeie"> +      <xsl:text> (</xsl:text> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'see'"/> +      </xsl:call-template> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="following-sibling::seeie"/> +      <xsl:text>)</xsl:text> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="secondaryie"> +  <fo:block start-indent="1pc"> +    <xsl:apply-templates/> +    <xsl:if test="following-sibling::seeie"> +      <xsl:text> (</xsl:text> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'see'"/> +      </xsl:call-template> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="following-sibling::seeie"/> +      <xsl:text>)</xsl:text> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="tertiaryie"> +  <fo:block start-indent="2pc"> +    <xsl:apply-templates/> +    <xsl:if test="following-sibling::seeie"> +      <xsl:text> (</xsl:text> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'see'"/> +      </xsl:call-template> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="following-sibling::seeie"/> +      <xsl:text>)</xsl:text> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="seeie"> +  <fo:inline> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<xsl:template match="seealsoie"> +  <fo:block> +    <xsl:attribute name="start-indent"> +      <xsl:choose> +        <xsl:when test="preceding-sibling::tertiaryie">3pc</xsl:when> +        <xsl:when test="preceding-sibling::secondaryie">2pc</xsl:when> +        <xsl:otherwise>1pc</xsl:otherwise> +      </xsl:choose> +    </xsl:attribute> +    <xsl:text>(</xsl:text> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'seealso'"/> +    </xsl:call-template> +    <xsl:text> </xsl:text> +    <xsl:apply-templates/> +    <xsl:text>)</xsl:text> +  </fo:block> +</xsl:template> + +<!-- Determines if an object should be inserted as an fo:inline +     or an fo:block.  Used for indexterms --> +<xsl:template name="inline.or.block"> +  <xsl:param name="parentnode" select=".."/> + +  <xsl:variable name="parent" select="local-name($parentnode)"/> + +  <xsl:variable name="block.parents" select="'|answer|appendix|appendixinfo|article|articleinfo|bibliodiv|bibliography|bibliographyinfo|blockinfo|blockquote|bookinfo|callout|caution|chapter|chapterinfo|dedication|example|figure|formalpara|funcsynopsisinfo|glossary|glossaryinfo|glossdef|glossdiv|glossentry|highlights|important|index|indexinfo|info|informalexample|informalfigure|informaltable|itemizedlist|legalnotice|listitem|msgexplan|msgtext|note|objectinfo|orderedlist|partinfo|partintro|preface|prefaceinfo|procedure|qandadiv|qandaset|question|refentry|refentryinfo|referenceinfo|refmeta|refmiscinfo|refsect1|refsect1info|refsect2|refsect2info|refsect3|refsect3info|refsection|refsectioninfo|refsynopsisdiv|refsynopsisdivinfo|revdescription|screeninfo|sect1|sect1info|sect2|sect2info|sect3|sect3info|sect4|sect4info|sect5|sect5info|section|sectioninfo|setindex|setindexinfo|setinfo|sidebar|sidebarinfo|simplesect|step|table|task|taskprerequisites|taskrelated|tasksummary|tip|variablelist|warning|'"/> + +  <xsl:choose> +    <xsl:when test="contains($parent, $block.parents)">fo:block</xsl:when> +    <xsl:otherwise>fo:inline</xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/info.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/info.xsl new file mode 100644 index 0000000..787a236 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/info.xsl @@ -0,0 +1,34 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: info.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- These templates define the "default behavior" for info +     elements.  Even if you don't process the *info wrappers, +     some of these elements are needed because the elements are +     processed from named templates that are called with modes. +     Since modes aren't sticky, these rules apply.  +     (TODO: clarify this comment) --> + +<!-- ==================================================================== --> +<!-- called from named templates in a given mode --> + +<xsl:template match="corpauthor"> +  <fo:inline> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/inline.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/inline.xsl new file mode 100644 index 0000000..3f777f6 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/inline.xsl @@ -0,0 +1,1234 @@ +<?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:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:xlink='http://www.w3.org/1999/xlink' +                exclude-result-prefixes="xlink" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: inline.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This 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="linkend" select="$node/@linkend"/> +  <xsl:param name="xhref" select="$node/@xlink:href"/> + +  <xsl:choose> +    <xsl:when test="$xhref +                    and (not($node/@xlink:type) or  +                         $node/@xlink:type='simple')"> + +      <!-- Is it a local idref? --> +      <xsl:variable name="is.idref"> +        <xsl:choose> +          <!-- if the href starts with # and does not contain an "(" --> +          <!-- or if the href starts with #xpointer(id(, it's just an ID --> +          <xsl:when test="starts-with($xhref,'#') +                          and (not(contains($xhref,'(')) +                          or starts-with($xhref, +                                     '#xpointer(id('))">1</xsl:when> +          <xsl:otherwise>0</xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <!-- Is it an olink ? --> +      <xsl:variable name="is.olink"> +        <xsl:choose> +	  <!-- If xlink:role="http://docbook.org/xlink/role/olink" --> +          <!-- and if the href contains # --> +          <xsl:when test="contains($xhref,'#') and +	       @xlink:role = $xolink.role">1</xsl:when> +          <xsl:otherwise>0</xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$is.idref = 1"> + +          <xsl:variable name="idref"> +            <xsl:call-template name="xpointer.idref"> +              <xsl:with-param name="xpointer" select="$xhref"/> +            </xsl:call-template> +          </xsl:variable> + +          <xsl:variable name="targets" select="key('id',$idref)"/> +          <xsl:variable name="target" select="$targets[1]"/> + +          <xsl:call-template name="check.id.unique"> +            <xsl:with-param name="linkend" select="$idref"/> +          </xsl:call-template> + +          <xsl:choose> +            <xsl:when test="count($target) = 0"> +              <xsl:message> +                <xsl:text>XLink to nonexistent id: </xsl:text> +                <xsl:value-of select="$idref"/> +              </xsl:message> +              <xsl:copy-of select="$content"/> +            </xsl:when> + +            <xsl:otherwise> +              <fo:basic-link internal-destination="{$idref}"> +                <xsl:copy-of select="$content"/> +              </fo:basic-link> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> + +        <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> +          <fo:basic-link external-destination="url({$xhref})"> +            <xsl:copy-of select="$content"/> +          </fo:basic-link> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <xsl:when test="$linkend"> +      <xsl:variable name="targets" select="key('id',$linkend)"/> +      <xsl:variable name="target" select="$targets[1]"/> + +      <xsl:call-template name="check.id.unique"> +        <xsl:with-param name="linkend" select="$linkend"/> +      </xsl:call-template> + +      <xsl:choose> +        <xsl:when test="count($target) = 0"> +          <xsl:message> +            <xsl:text>XLink to nonexistent id: </xsl:text> +            <xsl:value-of select="$linkend"/> +          </xsl:message> +          <xsl:copy-of select="$content"/> +        </xsl:when> + +        <xsl:otherwise> +          <fo:basic-link internal-destination="{$linkend}"> +            <xsl:copy-of select="$content"/> +          </fo:basic-link> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:copy-of select="$content"/> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="inline.charseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <xsl:choose> +    <xsl:when test="@dir"> +      <fo:inline> +        <xsl:attribute name="direction"> +          <xsl:choose> +            <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +            <xsl:otherwise>rtl</xsl:otherwise> +          </xsl:choose> +        </xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:inline> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$content"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="inline.monoseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline xsl:use-attribute-sets="monospace.properties"> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.boldseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline font-weight="bold"> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.italicseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline font-style="italic"> +    <xsl:call-template name="anchor"/> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.boldmonoseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline font-weight="bold" xsl:use-attribute-sets="monospace.properties"> +    <xsl:call-template name="anchor"/> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.italicmonoseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline font-style="italic" xsl:use-attribute-sets="monospace.properties"> +    <xsl:call-template name="anchor"/> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.superscriptseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline xsl:use-attribute-sets="superscript.properties"> +    <xsl:call-template name="anchor"/> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:choose> +      <xsl:when test="$fop.extensions != 0"> +        <xsl:attribute name="vertical-align">super</xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="baseline-shift">super</xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<xsl:template name="inline.subscriptseq"> +  <xsl:param name="content"> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:param> + +  <fo:inline xsl:use-attribute-sets="subscript.properties"> +    <xsl:call-template name="anchor"/> +    <xsl:if test="@dir"> +      <xsl:attribute name="direction"> +        <xsl:choose> +          <xsl:when test="@dir = 'ltr' or @dir = 'lro'">ltr</xsl:when> +          <xsl:otherwise>rtl</xsl:otherwise> +        </xsl:choose> +      </xsl:attribute> +    </xsl:if> +    <xsl:choose> +      <xsl:when test="$fop.extensions != 0"> +        <xsl:attribute name="vertical-align">sub</xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="baseline-shift">sub</xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:copy-of select="$content"/> +  </fo:inline> +</xsl:template> + +<!-- ==================================================================== --> +<!-- some special cases --> + +<xsl:template match="author"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:call-template name="person.name"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="editor"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:call-template name="person.name"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="othercredit"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:call-template name="person.name"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="authorinitials"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="accel"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="action"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="application"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="classname"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="exceptionname"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="interfacename"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="methodname"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="command"> +  <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="computeroutput"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="constant"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="database"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="date"> +  <!-- should this support locale-specific formatting? how? --> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="errorcode"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="errorname"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="errortype"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="errortext"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="envar"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="filename"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="function"> +  <xsl:choose> +    <xsl:when test="$function.parens != '0' +                    and (parameter or function or replaceable)"> +      <xsl:variable name="nodes" select="text()|*"/> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:call-template name="simple.xlink"> +            <xsl:with-param name="content"> +              <xsl:apply-templates select="$nodes[1]"/> +            </xsl:with-param> +          </xsl:call-template> +        </xsl:with-param> +      </xsl:call-template> +      <xsl:text>(</xsl:text> +      <xsl:apply-templates select="$nodes[position()>1]"/> +      <xsl:text>)</xsl:text> +    </xsl:when> +    <xsl:otherwise> +     <xsl:call-template name="inline.monoseq"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="function/parameter" priority="2"> +  <xsl:call-template name="inline.italicmonoseq"/> +  <xsl:if test="following-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="function/replaceable" priority="2"> +  <xsl:call-template name="inline.italicmonoseq"/> +  <xsl:if test="following-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="guibutton"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="guiicon"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="guilabel"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="guimenu"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="guimenuitem"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="guisubmenu"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="hardware"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="interface"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="interfacedefinition"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="keycap"> +  <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="keycode"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="keysym"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="literal"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="code"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="medialabel"> +  <xsl:call-template name="inline.italicseq"/> +</xsl:template> + +<xsl:template match="shortcut"> +  <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="mousebutton"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="option"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="package"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="parameter"> +  <xsl:call-template name="inline.italicmonoseq"/> +</xsl:template> + +<xsl:template match="property"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="prompt"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="replaceable"> +  <xsl:call-template name="inline.italicmonoseq"/> +</xsl:template> + +<xsl:template match="returnvalue"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="structfield"> +  <xsl:call-template name="inline.italicmonoseq"/> +</xsl:template> + +<xsl:template match="structname"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="symbol"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="systemitem"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="token"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="type"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="userinput"> +  <xsl:call-template name="inline.boldmonoseq"/> +</xsl:template> + +<xsl:template match="abbrev"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="acronym"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="citerefentry"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="citetitle"> +  <xsl:choose> +    <xsl:when test="@pubwork = 'article'"> +      <xsl:call-template name="gentext.startquote"/> +      <xsl:call-template name="inline.charseq"/> +      <xsl:call-template name="gentext.endquote"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="inline.italicseq"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="emphasis"> +  <xsl:variable name="depth"> +    <xsl:call-template name="dot.count"> +      <xsl:with-param name="string"> +        <xsl:number level="multiple"/> +      </xsl:with-param> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="@role='bold' or @role='strong'"> +      <xsl:call-template name="inline.boldseq"/> +    </xsl:when> +    <xsl:when test="@role='underline'"> +      <fo:inline text-decoration="underline"> +        <xsl:call-template name="inline.charseq"/> +      </fo:inline> +    </xsl:when> +    <xsl:when test="@role='strikethrough'"> +      <fo:inline text-decoration="line-through"> +        <xsl:call-template name="inline.charseq"/> +      </fo:inline> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$depth mod 2 = 1"> +          <fo:inline font-style="normal"> +            <xsl:apply-templates/> +          </fo:inline> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="inline.italicseq"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="foreignphrase"> +  <xsl:call-template name="inline.italicseq"/> +</xsl:template> + +<xsl:template match="markup"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="phrase"> +  <xsl:call-template name="inline.charseq"/> +</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"> +  <fo:inline font-style="italic"> +    <xsl:call-template name="inline.charseq"/> +  </fo:inline> +</xsl:template> + +<xsl:template match="superscript"> +  <xsl:call-template name="inline.superscriptseq"/> +</xsl:template> + +<xsl:template match="subscript"> +  <xsl:call-template name="inline.subscriptseq"/> +</xsl:template> + +<xsl:template match="trademark"> +  <xsl:call-template name="inline.charseq"/> +  <xsl:choose> +    <xsl:when test="@class = 'copyright' +                    or @class = 'registered'"> +      <xsl:call-template name="dingbat"> +        <xsl:with-param name="dingbat" select="@class"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="@class = 'service'"> +      <xsl:call-template name="inline.superscriptseq"> +        <xsl:with-param name="content" select="'SM'"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="dingbat"> +        <xsl:with-param name="dingbat" select="'trademark'"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="firstterm"> +  <xsl:call-template name="glossterm"> +    <xsl:with-param name="firstterm" select="1"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="glossterm" name="glossterm"> +  <xsl:param name="firstterm" select="0"/> + +  <xsl:choose> +    <xsl:when test="($firstterm.only.link = 0 or $firstterm = 1) and @linkend"> +      <xsl:variable name="targets" select="key('id',@linkend)"/> +      <xsl:variable name="target" select="$targets[1]"/> + +      <xsl:choose> +        <xsl:when test="$target"> +          <fo:basic-link internal-destination="{@linkend}"  +                         xsl:use-attribute-sets="xref.properties"> +            <xsl:call-template name="inline.italicseq"/> +          </fo:basic-link> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="inline.italicseq"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <xsl:when test="not(@linkend) +                    and ($firstterm.only.link = 0 or $firstterm = 1) +                    and ($glossterm.auto.link != 0) +                    and $glossary.collection != ''"> +      <xsl:variable name="term"> +        <xsl:choose> +          <xsl:when test="@baseform"><xsl:value-of select="@baseform"/></xsl:when> +          <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise> +        </xsl:choose> +      </xsl:variable> +      <xsl:variable name="cterm" +           select="(document($glossary.collection,.)//glossentry[glossterm=$term])[1]"/> + +      <xsl:choose> +        <xsl:when test="not($cterm)"> +          <xsl:message> +            <xsl:text>There's no entry for </xsl:text> +            <xsl:value-of select="$term"/> +            <xsl:text> in </xsl:text> +            <xsl:value-of select="$glossary.collection"/> +          </xsl:message> +          <xsl:call-template name="inline.italicseq"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:variable name="id"> +            <xsl:call-template name="object.id"> +              <xsl:with-param name="object" select="$cterm"/> +            </xsl:call-template> +          </xsl:variable> +          <fo:basic-link internal-destination="{$id}" +                         xsl:use-attribute-sets="xref.properties"> +            <xsl:call-template name="inline.italicseq"/> +          </fo:basic-link> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <xsl:when test="not(@linkend) +                    and ($firstterm.only.link = 0 or $firstterm = 1) +                    and $glossterm.auto.link != 0"> +      <xsl:variable name="term"> +        <xsl:choose> +          <xsl:when test="@baseform"> +            <xsl:value-of select="@baseform"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="."/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="targets" +                    select="//glossentry[glossterm=$term or 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> +          <xsl:variable name="termid"> +            <xsl:call-template name="object.id"> +              <xsl:with-param name="object" select="$target"/> +            </xsl:call-template> +          </xsl:variable> + +          <fo:basic-link internal-destination="{$termid}" +                         xsl:use-attribute-sets="xref.properties"> +            <xsl:call-template name="inline.charseq"/> +          </fo:basic-link> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="inline.italicseq"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="termdef"> +  <fo:inline> +    <xsl:call-template name="gentext.template"> +      <xsl:with-param name="context" select="'termdef'"/> +      <xsl:with-param name="name" select="'prefix'"/> +    </xsl:call-template> +    <xsl:apply-templates/> +    <xsl:call-template name="gentext.template"> +      <xsl:with-param name="context" select="'termdef'"/> +      <xsl:with-param name="name" select="'suffix'"/> +    </xsl:call-template> +  </fo:inline> +</xsl:template> + +<xsl:template match="sgmltag|tag"> +  <xsl:variable name="class"> +    <xsl:choose> +      <xsl:when test="@class"> +        <xsl:value-of select="@class"/> +      </xsl:when> +      <xsl:otherwise>element</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$class='attribute'"> +      <xsl:call-template name="inline.monoseq"/> +    </xsl:when> +    <xsl:when test="$class='attvalue'"> +      <xsl:call-template name="inline.monoseq"/> +    </xsl:when> +    <xsl:when test="$class='element'"> +      <xsl:call-template name="inline.monoseq"/> +    </xsl:when> +    <xsl:when test="$class='endtag'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text></</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='genentity'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text>&</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>;</xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='numcharref'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text>&#</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>;</xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='paramentity'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text>%</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>;</xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='pi'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text><?</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='xmlpi'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text><?</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>?></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='starttag'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text><</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='emptytag'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text><</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>/></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$class='sgmlcomment' or $class='comment'"> +      <xsl:call-template name="inline.monoseq"> +        <xsl:with-param name="content"> +          <xsl:text><!--</xsl:text> +          <xsl:apply-templates/> +          <xsl:text>--></xsl:text> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="inline.charseq"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="email"> +  <xsl:call-template name="inline.monoseq"> +    <xsl:with-param name="content"> +      <fo:inline keep-together.within-line="always" hyphenate="false"> +        <xsl:if test="not($email.delimiters.enabled = 0)"> +          <xsl:text><</xsl:text> +        </xsl:if> +        <xsl:apply-templates/> +        <xsl:if test="not($email.delimiters.enabled = 0)"> +          <xsl:text>></xsl:text> +        </xsl:if> +      </fo:inline> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="keycombo"> +  <xsl:variable name="action" select="@action"/> +  <xsl:variable name="joinchar"> +    <xsl:choose> +      <xsl:when test="$action='seq'"><xsl:text> </xsl:text></xsl:when> +      <xsl:when test="$action='simul'">+</xsl:when> +      <xsl:when test="$action='press'">-</xsl:when> +      <xsl:when test="$action='click'">-</xsl:when> +      <xsl:when test="$action='double-click'">-</xsl:when> +      <xsl:when test="$action='other'"></xsl:when> +      <xsl:otherwise>+</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:for-each select="*"> +    <xsl:if test="position()>1"><xsl:value-of select="$joinchar"/></xsl:if> +    <xsl:apply-templates select="."/> +  </xsl:for-each> +</xsl:template> + +<xsl:template match="uri"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="menuchoice"> +  <xsl:variable name="shortcut" select="./shortcut"/> +  <xsl:call-template name="process.menuchoice"/> +  <xsl:if test="$shortcut"> +    <xsl:text> (</xsl:text> +    <xsl:apply-templates select="$shortcut"/> +    <xsl:text>)</xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template name="process.menuchoice"> +  <xsl:param name="nodelist" select="guibutton|guiicon|guilabel|guimenu|guimenuitem|guisubmenu|interface"/><!-- not(shortcut) --> +  <xsl:param name="count" select="1"/> + +  <xsl:variable name="mm.separator"> +    <xsl:choose> +      <xsl:when test="($fop.extensions != 0 or $fop1.extensions != 0 ) and +                contains($menuchoice.menu.separator, '→')"> +        <fo:inline font-family="Symbol"> +          <xsl:copy-of select="$menuchoice.menu.separator"/> +        </fo:inline> +      </xsl:when> +      <xsl:otherwise> +        <xsl:copy-of select="$menuchoice.menu.separator"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$count>count($nodelist)"></xsl:when> +    <xsl:when test="$count=1"> +      <xsl:apply-templates select="$nodelist[$count=position()]"/> +      <xsl:call-template name="process.menuchoice"> +        <xsl:with-param name="nodelist" select="$nodelist"/> +        <xsl:with-param name="count" select="$count+1"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="node" select="$nodelist[$count=position()]"/> +      <xsl:choose> +        <xsl:when test="local-name($node)='guimenuitem' +                        or local-name($node)='guisubmenu'"> +          <xsl:copy-of select="$mm.separator"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:copy-of select="$menuchoice.separator"/> +        </xsl:otherwise> +      </xsl:choose> +      <xsl:apply-templates select="$node"/> +      <xsl:call-template name="process.menuchoice"> +        <xsl:with-param name="nodelist" select="$nodelist"/> +        <xsl:with-param name="count" select="$count+1"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="optional"> +  <xsl:value-of select="$arg.choice.opt.open.str"/> +  <xsl:call-template name="inline.charseq"/> +  <xsl:value-of select="$arg.choice.opt.close.str"/> +</xsl:template> + +<xsl:template match="citation"> +  <!-- todo: integrate with bibliography collection --> +  <xsl:variable name="targets" select="(//biblioentry | //bibliomixed)[abbrev = string(current())]"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:choose> +    <!-- try automatic linking based on match to abbrev --> +    <xsl:when test="$target and not(xref) and not(link)"> + +      <xsl:text>[</xsl:text> +      <fo:basic-link> +        <xsl:attribute name="internal-destination"> +          <xsl:call-template name="object.id"> +            <xsl:with-param name="object" select="$target"/> +          </xsl:call-template> +        </xsl:attribute> + +	<xsl:choose> +	  <xsl:when test="$bibliography.numbered != 0"> +	    <xsl:apply-templates select="$target" mode="citation"/> +	  </xsl:when> +	  <xsl:otherwise> +	    <xsl:call-template name="inline.charseq"/> +	  </xsl:otherwise> +	</xsl:choose> +      +      </fo:basic-link> +      <xsl:text>]</xsl:text> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:text>[</xsl:text> +      <xsl:call-template name="inline.charseq"/> +      <xsl:text>]</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="citation"> +  <xsl:number from="bibliography" count="biblioentry|bibliomixed" +	      level="any" format="1"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="comment[&comment.block.parents;]|remark[&comment.block.parents;]"> +  <xsl:if test="$show.comments != 0"> +    <fo:block font-style="italic"> +      <xsl:call-template name="inline.charseq"/> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="comment|remark"> +  <xsl:if test="$show.comments != 0"> +    <fo:inline font-style="italic"> +      <xsl:call-template name="inline.charseq"/> +    </fo:inline> +  </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="productname"> +  <xsl:call-template name="inline.charseq"/> +  <xsl:if test="@class"> +    <xsl:call-template name="dingbat"> +      <xsl:with-param name="dingbat" select="@class"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template match="productnumber"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="pob|street|city|state|postcode|country|otheraddr"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="phone|fax"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<!-- in Addresses, for example --> +<xsl:template match="honorific|firstname|surname|lineage|othername"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="person"> +  <xsl:apply-templates select="personname"/> +</xsl:template> + +<xsl:template match="personname"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:call-template name="person.name"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="jobtitle"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="org"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="orgname"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="orgdiv"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="affiliation"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="beginpage"> +  <!-- does nothing; this *is not* markup to force a page break. --> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/keywords.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/keywords.xsl new file mode 100644 index 0000000..5e507a9 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/keywords.xsl @@ -0,0 +1,21 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: keywords.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:template match="keywordset"></xsl:template> +<xsl:template match="subjectset"></xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/lists.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/lists.xsl new file mode 100644 index 0000000..c3a20b8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/lists.xsl @@ -0,0 +1,1287 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: lists.xsl 8228 2007-07-21 15:00:15Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="itemizedlist"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="pi-label-width"> +    <xsl:call-template name="pi.dbfo_label-width"/> +  </xsl:variable> + +  <xsl:variable name="label-width"> +    <xsl:choose> +      <xsl:when test="$pi-label-width = ''"> +	<xsl:value-of select="$itemizedlist.label.width"/> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="$pi-label-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +      select="*[not(self::listitem +                or self::title +                or self::titleabbrev)] +              |comment()[not(preceding-sibling::listitem)] +              |processing-instruction()[not(preceding-sibling::listitem)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates  +          select="listitem +                  |comment()[preceding-sibling::listitem] +                  |processing-instruction()[preceding-sibling::listitem]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="itemizedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing itemizedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +	<xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<xsl:template match="itemizedlist/title|orderedlist/title"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/title" mode="vl.as.list"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/title" mode="vl.as.blocks"> +  <!--nop--> +</xsl:template> + +<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev"> +  <!--nop--> +</xsl:template> + +<xsl:template match="procedure/titleabbrev"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/titleabbrev" mode="vl.as.list"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/titleabbrev" mode="vl.as.blocks"> +  <!--nop--> +</xsl:template> + +<xsl:template match="itemizedlist/listitem"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="item.contents"> +    <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="itemizedlist.label.properties"> +      <fo:block> +        <xsl:call-template name="itemizedlist.label.markup"> +          <xsl:with-param name="itemsymbol"> +            <xsl:call-template name="list.itemsymbol"> +              <xsl:with-param name="node" select="parent::itemizedlist"/> +            </xsl:call-template> +          </xsl:with-param> +        </xsl:call-template> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <xsl:choose> +        <!-- * work around broken passivetex list-item-body rendering --> +        <xsl:when test="$passivetex.extensions = '1'"> +          <xsl:apply-templates/> +        </xsl:when> +        <xsl:otherwise> +          <fo:block> +            <xsl:apply-templates/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </fo:list-item-body> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*/@spacing = 'compact'"> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="itemizedlist.label.markup"> +  <xsl:param name="itemsymbol" select="'disc'"/> + +  <xsl:choose> +    <xsl:when test="$itemsymbol='none'"></xsl:when> +    <xsl:when test="$itemsymbol='disc'">•</xsl:when> +    <xsl:when test="$itemsymbol='bullet'">•</xsl:when> +    <xsl:when test="$itemsymbol='endash'">–</xsl:when> +    <xsl:when test="$itemsymbol='emdash'">—</xsl:when> +    <!-- Some of these may work in your XSL-FO processor and fonts --> +    <!-- +    <xsl:when test="$itemsymbol='square'">■</xsl:when> +    <xsl:when test="$itemsymbol='box'">■</xsl:when> +    <xsl:when test="$itemsymbol='smallblacksquare'">▪</xsl:when> +    <xsl:when test="$itemsymbol='circle'">○</xsl:when> +    <xsl:when test="$itemsymbol='opencircle'">○</xsl:when> +    <xsl:when test="$itemsymbol='whitesquare'">□</xsl:when> +    <xsl:when test="$itemsymbol='smallwhitesquare'">▫</xsl:when> +    <xsl:when test="$itemsymbol='round'">●</xsl:when> +    <xsl:when test="$itemsymbol='blackcircle'">●</xsl:when> +    <xsl:when test="$itemsymbol='whitebullet'">◦</xsl:when> +    <xsl:when test="$itemsymbol='triangle'">‣</xsl:when> +    <xsl:when test="$itemsymbol='point'">›</xsl:when> +    <xsl:when test="$itemsymbol='hand'"><fo:inline  +                         font-family="Wingdings 2">A</fo:inline></xsl:when> +    --> +    <xsl:otherwise>•</xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="orderedlist"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="pi-label-width"> +    <xsl:call-template name="pi.dbfo_label-width"/> +  </xsl:variable> + +  <xsl:variable name="label-width"> +    <xsl:choose> +      <xsl:when test="$pi-label-width = ''"> +	<xsl:value-of select="$orderedlist.label.width"/> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="$pi-label-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +      select="*[not(self::listitem +                or self::title +                or self::titleabbrev)] +              |comment()[not(preceding-sibling::listitem)] +              |processing-instruction()[not(preceding-sibling::listitem)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates  +          select="listitem +                  |comment()[preceding-sibling::listitem] +                  |processing-instruction()[preceding-sibling::listitem]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="orderedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing orderedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="orderedlist/listitem" mode="item-number"> +  <xsl:variable name="numeration"> +    <xsl:call-template name="list.numeration"> +      <xsl:with-param name="node" select="parent::orderedlist"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:choose> +      <xsl:when test="$numeration='arabic'">1.</xsl:when> +      <xsl:when test="$numeration='loweralpha'">a.</xsl:when> +      <xsl:when test="$numeration='lowerroman'">i.</xsl:when> +      <xsl:when test="$numeration='upperalpha'">A.</xsl:when> +      <xsl:when test="$numeration='upperroman'">I.</xsl:when> +      <!-- What!? This should never happen --> +      <xsl:otherwise> +        <xsl:message> +          <xsl:text>Unexpected numeration: </xsl:text> +          <xsl:value-of select="$numeration"/> +        </xsl:message> +        <xsl:value-of select="1."/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="item-number"> +    <xsl:call-template name="orderedlist-item-number"/> +  </xsl:variable> + +  <xsl:if test="parent::orderedlist/@inheritnum='inherit' +                and ancestor::listitem[parent::orderedlist]"> +    <xsl:apply-templates select="ancestor::listitem[parent::orderedlist][1]" +                         mode="item-number"/> +  </xsl:if> + +  <xsl:number value="$item-number" format="{$type}"/> +</xsl:template> + +<xsl:template match="orderedlist/listitem"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="item.contents"> +    <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="orderedlist.label.properties"> +      <fo:block> +        <xsl:apply-templates select="." mode="item-number"/> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*/@spacing = 'compact'"> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="listitem/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara'] +                     |glossdef/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara'] +                     |step/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara'] +                     |callout/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara']" +              priority="2"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="variablelist"> +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_list-presentation"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$presentation = 'list'"> +      <xsl:apply-templates select="." mode="vl.as.list"/> +    </xsl:when> +    <xsl:when test="$presentation = 'blocks'"> +      <xsl:apply-templates select="." mode="vl.as.blocks"/> +    </xsl:when> +    <xsl:when test="$variablelist.as.blocks != 0"> +      <xsl:apply-templates select="." mode="vl.as.blocks"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="." mode="vl.as.list"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="variablelist" mode="vl.as.list"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="term-width"> +    <xsl:call-template name="pi.dbfo_term-width"/> +  </xsl:variable> + +  <xsl:variable name="termlength"> +    <xsl:choose> +      <xsl:when test="$term-width != ''"> +        <xsl:value-of select="$term-width"/> +      </xsl:when> +      <xsl:when test="@termlength"> +        <xsl:variable name="termlength.is.number"> +          <xsl:value-of select="@termlength + 0"/> +        </xsl:variable> +        <xsl:choose> +          <xsl:when test="string($termlength.is.number) = 'NaN'"> +            <!-- if the term length isn't just a number, assume it's a measurement --> +            <xsl:value-of select="@termlength"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="@termlength"/> +            <xsl:choose> +              <!-- workaround for passivetex lack of support for non-constant expressions --> +              <xsl:when test="$passivetex.extensions != 0"> +                <xsl:text>em</xsl:text> +              </xsl:when> +              <xsl:otherwise> +                <xsl:text>em * 0.60</xsl:text> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="longest.term"> +          <xsl:with-param name="terms" select="varlistentry/term"/> +          <xsl:with-param name="maxlength" select="$variablelist.max.termlength"/> +        </xsl:call-template> +        <xsl:choose> +          <!-- workaround for passivetex lack of support for non-constant expressions --> +          <xsl:when test="$passivetex.extensions != 0"> +            <xsl:text>em</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:text>em * 0.60</xsl:text> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +<!-- +  <xsl:message> +    <xsl:text>term width: </xsl:text> +    <xsl:value-of select="$termlength"/> +  </xsl:message> +--> + +  <xsl:variable name="label-separation">1em</xsl:variable> +  <xsl:variable name="distance-between-starts"> +    <xsl:choose> +      <!-- workaround for passivetex lack of support for non-constant expressions --> +      <xsl:when test="$passivetex.extensions != 0"> +        <xsl:value-of select="$termlength"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$termlength"/> +        <xsl:text>+</xsl:text> +        <xsl:value-of select="$label-separation"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +    select="*[not(self::varlistentry +              or self::title +              or self::titleabbrev)] +            |comment()[not(preceding-sibling::varlistentry)] +            |processing-instruction()[not(preceding-sibling::varlistentry)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates mode="vl.as.list" +      select="varlistentry +              |comment()[preceding-sibling::varlistentry] +              |processing-instruction()[preceding-sibling::varlistentry]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:list-block id="{$id}" +                     provisional-distance-between-starts= +                        "{$distance-between-starts}" +                     provisional-label-separation="{$label-separation}"> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block id="{$id}" +                     provisional-distance-between-starts= +                        "{$distance-between-starts}" +                     provisional-label-separation="{$label-separation}" +                     xsl:use-attribute-sets="list.block.spacing"> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="longest.term"> +  <xsl:param name="longest" select="0"/> +  <xsl:param name="terms" select="."/> +  <xsl:param name="maxlength" select="-1"/> + +  <!-- Process out any indexterms in the term --> +  <xsl:variable name="term.text"> +    <xsl:apply-templates select="$terms[1]"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$longest > $maxlength and $maxlength > 0"> +      <xsl:value-of select="$maxlength"/> +    </xsl:when> +    <xsl:when test="not($terms)"> +      <xsl:value-of select="$longest"/> +    </xsl:when> +    <xsl:when test="string-length($term.text) > $longest"> +      <xsl:call-template name="longest.term"> +        <xsl:with-param name="longest"  +            select="string-length($term.text)"/> +        <xsl:with-param name="maxlength" select="$maxlength"/> +        <xsl:with-param name="terms" select="$terms[position() > 1]"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="longest.term"> +        <xsl:with-param name="longest" select="$longest"/> +        <xsl:with-param name="maxlength" select="$maxlength"/> +        <xsl:with-param name="terms" select="$terms[position() > 1]"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varlistentry" mode="vl.as.list"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="item.contents"> +    <fo:list-item-label end-indent="label-end()" text-align="start"> +      <fo:block> +        <xsl:apply-templates select="term"/> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates select="listitem"/> +      </fo:block> +    </fo:list-item-body> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*/@spacing = 'compact'"> +      <fo:list-item id="{$id}" +          xsl:use-attribute-sets="compact.list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + + +<xsl:template match="variablelist" mode="vl.as.blocks"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <!-- termlength is irrelevant --> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +    select="*[not(self::varlistentry +              or self::title +              or self::titleabbrev)] +            |comment()[not(preceding-sibling::varlistentry)] +            |processing-instruction()[not(preceding-sibling::varlistentry)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates mode="vl.as.blocks" +      select="varlistentry +              |comment()[preceding-sibling::varlistentry] +              |processing-instruction()[preceding-sibling::varlistentry]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:block id="{$id}"> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" xsl:use-attribute-sets="list.block.spacing"> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varlistentry" mode="vl.as.blocks"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing"   +      keep-together.within-column="always"  +      keep-with-next.within-column="always"> +    <xsl:apply-templates select="term"/> +  </fo:block> + +  <fo:block margin-left="0.25in"> +    <xsl:apply-templates select="listitem"/> +  </fo:block> +</xsl:template> + +<xsl:template match="varlistentry/term"> +  <fo:inline> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </fo:inline> +  <xsl:choose> +    <xsl:when test="not(following-sibling::term)"/> <!-- do nothing --> +    <xsl:otherwise> +      <!-- * if we have multiple terms in the same varlistentry, generate --> +      <!-- * a separator (", " by default) and/or an additional line --> +      <!-- * break after each one except the last --> +      <fo:inline><xsl:value-of select="$variablelist.term.separator"/></fo:inline> +      <xsl:if test="not($variablelist.term.break.after = '0')"> +        <fo:block/> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varlistentry/listitem"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="title" mode="list.title.mode"> +  <xsl:call-template name="formal.object.heading"> +    <xsl:with-param name="object" select=".."/> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="simplelist|simplelist[@type='vert']"> +  <!-- with no type specified, the default is 'vert' --> + +  <xsl:variable name="explicit.table.width"> +    <xsl:call-template name="dbfo-attribute"> +      <xsl:with-param name="pis" +		      select="processing-instruction('dbfo')"/> +      <xsl:with-param name="attribute" select="'list-width'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="table.width"> +    <xsl:choose> +      <xsl:when test="$explicit.table.width != ''"> +        <xsl:value-of select="$explicit.table.width"/> +      </xsl:when> +      <xsl:when test="$default.table.width = ''"> +        <xsl:text>100%</xsl:text> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$default.table.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:table xsl:use-attribute-sets="normal.para.spacing"> + +    <xsl:choose> +      <xsl:when test="$axf.extensions != 0 or $xep.extensions != 0"> +	<xsl:attribute name="table-layout">auto</xsl:attribute> +        <xsl:if test="$explicit.table.width != ''"> +          <xsl:attribute name="width"><xsl:value-of  +	  select="$explicit.table.width"/></xsl:attribute> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="table-layout">fixed</xsl:attribute> +        <xsl:attribute name="width"><xsl:value-of  +                                      select="$table.width"/></xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:call-template name="simplelist.table.columns"> +      <xsl:with-param name="cols"> +        <xsl:choose> +          <xsl:when test="@columns"> +            <xsl:value-of select="@columns"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <xsl:call-template name="simplelist.vert"> +        <xsl:with-param name="cols"> +          <xsl:choose> +            <xsl:when test="@columns"> +              <xsl:value-of select="@columns"/> +            </xsl:when> +            <xsl:otherwise>1</xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +      </xsl:call-template> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template match="simplelist[@type='inline']"> +  <!-- if dbchoice PI exists, use that to determine the choice separator --> +  <!-- (that is, equivalent of "and" or "or" in current locale), or literal --> +  <!-- value of "choice" otherwise --> +  <fo:inline><xsl:variable name="localized-choice-separator"> +    <xsl:choose> +      <xsl:when test="processing-instruction('dbchoice')"> +        <xsl:call-template name="select.choice.separator"/> +      </xsl:when> +      <xsl:otherwise> +        <!-- empty --> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:for-each select="member"> +    <xsl:apply-templates/> +    <xsl:choose> +      <xsl:when test="position() = last()"/> <!-- do nothing --> +      <xsl:otherwise> +	<xsl:text>, </xsl:text> +	<xsl:if test="position() = last() - 1"> +	  <xsl:if test="$localized-choice-separator != ''"> +	    <xsl:value-of select="$localized-choice-separator"/> +	    <xsl:text> </xsl:text> +	  </xsl:if> +	</xsl:if> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:for-each></fo:inline> +</xsl:template> + +<xsl:template match="simplelist[@type='horiz']"> + +  <xsl:variable name="explicit.table.width"> +    <xsl:call-template name="pi.dbfo_list-width"/> +  </xsl:variable> + +  <xsl:variable name="table.width"> +    <xsl:choose> +      <xsl:when test="$explicit.table.width != ''"> +        <xsl:value-of select="$explicit.table.width"/> +      </xsl:when> +      <xsl:when test="$default.table.width = ''"> +        <xsl:text>100%</xsl:text> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$default.table.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:table xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:choose> +      <xsl:when test="$axf.extensions != 0 or $xep.extensions != 0"> +        <xsl:attribute name="table-layout">auto</xsl:attribute> +        <xsl:if test="$explicit.table.width != ''"> +          <xsl:attribute name="width"><xsl:value-of  +                             select="$explicit.table.width"/></xsl:attribute> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="table-layout">fixed</xsl:attribute> +        <xsl:attribute name="width"><xsl:value-of  +                                      select="$table.width"/></xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:call-template name="simplelist.table.columns"> +      <xsl:with-param name="cols"> +        <xsl:choose> +          <xsl:when test="@columns"> +            <xsl:value-of select="@columns"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <xsl:call-template name="simplelist.horiz"> +        <xsl:with-param name="cols"> +          <xsl:choose> +            <xsl:when test="@columns"> +              <xsl:value-of select="@columns"/> +            </xsl:when> +            <xsl:otherwise>1</xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +      </xsl:call-template> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template name="simplelist.table.columns"> +  <xsl:param name="cols" select="1"/> +  <xsl:param name="curcol" select="1"/> +  <fo:table-column column-number="{$curcol}" +                   column-width="proportional-column-width(1)"/> +  <xsl:if test="$curcol < $cols"> +    <xsl:call-template name="simplelist.table.columns"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="curcol" select="$curcol + 1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.horiz"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> + +  <xsl:if test="$cell <= count($members)"> +    <fo:table-row> +      <xsl:call-template name="simplelist.horiz.row"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="cell" select="$cell"/> +        <xsl:with-param name="members" select="$members"/> +      </xsl:call-template> +   </fo:table-row> +    <xsl:call-template name="simplelist.horiz"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell + $cols"/> +      <xsl:with-param name="members" select="$members"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.horiz.row"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="curcol">1</xsl:param> + +  <xsl:if test="$curcol <= $cols"> +    <fo:table-cell> +      <fo:block> +        <xsl:if test="$members[position()=$cell]"> +          <xsl:apply-templates select="$members[position()=$cell]"/> +        </xsl:if> +      </fo:block> +    </fo:table-cell> +    <xsl:call-template name="simplelist.horiz.row"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell+1"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="curcol" select="$curcol+1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.vert"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="rows" +             select="floor((count($members)+$cols - 1) div $cols)"/> + +  <xsl:if test="$cell <= $rows"> +    <fo:table-row> +      <xsl:call-template name="simplelist.vert.row"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="rows" select="$rows"/> +        <xsl:with-param name="cell" select="$cell"/> +        <xsl:with-param name="members" select="$members"/> +      </xsl:call-template> +   </fo:table-row> +    <xsl:call-template name="simplelist.vert"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell+1"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="rows" select="$rows"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.vert.row"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="rows">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="curcol">1</xsl:param> + +  <xsl:if test="$curcol <= $cols"> +    <fo:table-cell> +      <fo:block> +        <xsl:if test="$members[position()=$cell]"> +          <xsl:apply-templates select="$members[position()=$cell]"/> +        </xsl:if> +      </fo:block> +    </fo:table-cell> +    <xsl:call-template name="simplelist.vert.row"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="rows" select="$rows"/> +      <xsl:with-param name="cell" select="$cell+$rows"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="curcol" select="$curcol+1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template match="member"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="procedure"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="param.placement" +                select="substring-after(normalize-space($formal.title.placement), +                                        concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Preserve order of PIs and comments --> +  <xsl:variable name="preamble" +        select="*[not(self::step +                  or self::title +                  or self::titleabbrev)] +                |comment()[not(preceding-sibling::step)] +                |processing-instruction()[not(preceding-sibling::step)]"/> + +  <xsl:variable name="steps"  +                select="step +                        |comment()[preceding-sibling::step] +                        |processing-instruction()[preceding-sibling::step]"/> + +  <fo:block id="{$id}" xsl:use-attribute-sets="procedure.properties list.block.spacing"> +    <xsl:if test="./title and $placement = 'before'"> +      <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" --> +      <!-- heading even though we called formal.object.heading. odd but true. --> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <xsl:apply-templates select="$preamble"/> + +    <fo:list-block xsl:use-attribute-sets="list.block.spacing" +                   provisional-distance-between-starts="2em" +                   provisional-label-separation="0.2em"> +      <xsl:apply-templates select="$steps"/> +    </fo:list-block> + +    <xsl:if test="./title and $placement != 'before'"> +      <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" --> +      <!-- heading even though we called formal.object.heading. odd but true. --> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="procedure/title"> +</xsl:template> + +<xsl:template match="substeps"> +  <fo:list-block xsl:use-attribute-sets="list.block.spacing" +                 provisional-distance-between-starts="2em" +                 provisional-label-separation="0.2em"> +    <xsl:apply-templates/> +  </fo:list-block> +</xsl:template> + +<xsl:template match="procedure/step|substeps/step"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:list-item xsl:use-attribute-sets="list.item.spacing"> +    <fo:list-item-label end-indent="label-end()"> +      <fo:block id="{$id}"> +        <!-- dwc: fix for one step procedures. Use a bullet if there's no step 2 --> +        <xsl:choose> +          <xsl:when test="count(../step) = 1"> +            <xsl:text>•</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="." mode="number"> +              <xsl:with-param name="recursive" select="0"/> +            </xsl:apply-templates>. +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="stepalternatives"> +  <fo:list-block provisional-distance-between-starts="2em" +                 provisional-label-separation="0.2em"> +    <xsl:apply-templates select="step"/> +  </fo:list-block> +</xsl:template> + +<xsl:template match="stepalternatives/step"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:list-item xsl:use-attribute-sets="list.item.spacing"> +    <fo:list-item-label end-indent="label-end()"> +      <fo:block id="{$id}"> +        <xsl:text>•</xsl:text> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="step/title"> +  <fo:block font-weight="bold" +            keep-together.within-column="always"  +            keep-with-next.within-column="always"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="segmentedlist"> +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_list-presentation"/> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$presentation = 'table'"> +      <fo:block id="{$id}"> +        <xsl:apply-templates select="." mode="seglist-table"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="$presentation = 'list'"> +      <fo:block id="{$id}"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="$segmentedlist.as.table != 0"> +      <fo:block id="{$id}"> +        <xsl:apply-templates select="." mode="seglist-table"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="segmentedlist/title"> +  <xsl:apply-templates select="." mode="list.title.mode" /> +</xsl:template> + +<xsl:template match="segtitle"> +</xsl:template> + +<xsl:template match="segtitle" mode="segtitle-in-seg"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="seglistitem"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:block id="{$id}"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="seg"> +  <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/> +  <xsl:variable name="seglist" select="ancestor::segmentedlist"/> +  <xsl:variable name="segtitles" select="$seglist/segtitle"/> + +  <!-- +     Note: segtitle is only going to be the right thing in a well formed +     SegmentedList.  If there are too many Segs or too few SegTitles, +     you'll get something odd...maybe an error +  --> + +  <fo:block> +    <fo:inline font-weight="bold"> +      <xsl:apply-templates select="$segtitles[$segnum=position()]" +                           mode="segtitle-in-seg"/> +      <xsl:text>: </xsl:text> +    </fo:inline> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="segmentedlist" mode="seglist-table"> +  <xsl:apply-templates select="title" mode="list.title.mode" /> +  <fo:table> +    <fo:table-column column-number="1" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="2" column-width="proportional-column-width(1)"/> +    <fo:table-header start-indent="0pt" end-indent="0pt"> +      <fo:table-row> +        <xsl:apply-templates select="segtitle" mode="seglist-table"/> +      </fo:table-row> +    </fo:table-header> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <xsl:apply-templates select="seglistitem" mode="seglist-table"/> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template match="segtitle" mode="seglist-table"> +  <fo:table-cell> +    <fo:block font-weight="bold"> +      <xsl:apply-templates/> +    </fo:block> +  </fo:table-cell> +</xsl:template> + +<xsl:template match="seglistitem" mode="seglist-table"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:table-row id="{$id}"> +    <xsl:apply-templates mode="seglist-table"/> +  </fo:table-row> +</xsl:template> + +<xsl:template match="seg" mode="seglist-table"> +  <fo:table-cell> +    <fo:block> +      <xsl:apply-templates/> +    </fo:block> +  </fo:table-cell> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="calloutlist"> +  <xsl:variable name="id"> +  <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}" +            text-align="{$alignment}"> +    <!-- The above restores alignment altered by image align attribute --> +    <xsl:if test="title|info/title"> +      <xsl:apply-templates select="(title|info/title)[1]"  +                           mode="list.title.mode"/> +    </xsl:if> + +    <!-- Preserve order of PIs and comments --> +    <xsl:apply-templates  +         select="*[not(self::callout or self::title or self::titleabbrev)] +                   |comment()[not(preceding-sibling::callout)] +                   |processing-instruction()[not(preceding-sibling::callout)]"/> + +    <fo:list-block space-before.optimum="1em" +                   space-before.minimum="0.8em" +                   space-before.maximum="1.2em" +                   provisional-distance-between-starts="2.2em" +                   provisional-label-separation="0.2em"> +      <xsl:apply-templates select="callout +                                |comment()[preceding-sibling::callout] +                                |processing-instruction()[preceding-sibling::callout]"/> +    </fo:list-block> +  </fo:block> +</xsl:template> + +<xsl:template match="calloutlist/title"> +</xsl:template> + +<xsl:template match="callout"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> +  <fo:list-item id="{$id}"> +    <fo:list-item-label end-indent="label-end()"> +      <fo:block> +        <xsl:call-template name="callout.arearefs"> +          <xsl:with-param name="arearefs" select="@arearefs"/> +        </xsl:call-template> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template name="callout.arearefs"> +  <xsl:param name="arearefs"></xsl:param> +  <xsl:if test="$arearefs!=''"> +    <xsl:choose> +      <xsl:when test="substring-before($arearefs,' ')=''"> +        <xsl:call-template name="callout.arearef"> +          <xsl:with-param name="arearef" select="$arearefs"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="callout.arearef"> +          <xsl:with-param name="arearef" +                          select="substring-before($arearefs,' ')"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:call-template name="callout.arearefs"> +      <xsl:with-param name="arearefs" +                      select="substring-after($arearefs,' ')"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="callout.arearef"> +  <xsl:param name="arearef"></xsl:param> +  <xsl:variable name="targets" select="key('id',$arearef)"/> +  <xsl:variable name="target" select="$targets[1]"/> + +  <xsl:choose> +    <xsl:when test="count($target)=0"> +      <xsl:value-of select="$arearef"/> +      <xsl:text>: ???</xsl:text> +    </xsl:when> +    <xsl:when test="local-name($target)='co'"> +      <xsl:apply-templates select="$target" mode="callout-bug"/> +    </xsl:when> +    <xsl:when test="local-name($target)='areaset'"> +      <xsl:call-template name="callout-bug"> +        <xsl:with-param name="conum"> +          <xsl:apply-templates select="$target" mode="conumber"/> +        </xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="local-name($target)='area'"> +      <xsl:choose> +        <xsl:when test="$target/parent::areaset"> +          <xsl:call-template name="callout-bug"> +            <xsl:with-param name="conum"> +              <xsl:apply-templates select="$target/parent::areaset" +                                   mode="conumber"/> +            </xsl:with-param> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="callout-bug"> +            <xsl:with-param name="conum"> +              <xsl:apply-templates select="$target" mode="conumber"/> +            </xsl:with-param> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>???</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="orderedlist-starting-number"> +  <xsl:param name="list" select="."/> +  <xsl:variable name="pi-start"> +    <xsl:call-template name="pi.dbfo_start"> +      <xsl:with-param name="node" select="$list"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:call-template name="output-orderedlist-starting-number"> +    <xsl:with-param name="list" select="$list"/> +    <xsl:with-param name="pi-start" select="$pi-start"/> +  </xsl:call-template> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/math.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/math.xsl new file mode 100644 index 0000000..f7873eb --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/math.xsl @@ -0,0 +1,128 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:mml="http://www.w3.org/1998/Math/MathML" +                exclude-result-prefixes="mml" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: math.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:template match="inlineequation"> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0 and $tex.math.in.alt != ''"> +      <xsl:apply-templates select="alt[@role='tex'] | inlinemediaobject/textobject[@role='tex']"> +        <xsl:with-param name="output.delims"> +          <xsl:call-template name="tex.math.output.delims"/> +        </xsl:with-param> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="alt"> +</xsl:template> + +<xsl:template match="mathphrase"> +  <fo:inline> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<!-- "Support" for MathML --> + +<xsl:template match="mml:math" xmlns:mml="http://www.w3.org/1998/Math/MathML"> +  <fo:instream-foreign-object> +    <xsl:copy> +      <xsl:copy-of select="@*"/> +      <xsl:apply-templates/> +    </xsl:copy> +  </fo:instream-foreign-object> +</xsl:template> + +<xsl:template match="mml:*" xmlns:mml="http://www.w3.org/1998/Math/MathML"> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:apply-templates/> +  </xsl:copy> +</xsl:template> + +<xsl:template match="equation/graphic | informalequation/graphic"> +  <xsl:if test="$passivetex.extensions = 0 or $tex.math.in.alt = ''"> +    <fo:block> +      <xsl:call-template name="process.image"/> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="inlineequation/alt[@role='tex'] |  +                     inlineequation/inlinemediaobject/textobject[@role='tex']" priority="1"> +  <xsl:param name="output.delims" select="1"/> +  <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''"> +    <xsl:processing-instruction name="xmltex"> +      <xsl:if test="$output.delims != 0"> +        <xsl:text>$</xsl:text> +      </xsl:if> +      <xsl:value-of select="."/> +      <xsl:if test="$output.delims != 0"> +        <xsl:text>$</xsl:text> +      </xsl:if> +    </xsl:processing-instruction> +  </xsl:if> +</xsl:template> + +<xsl:template match="equation/alt[@role='tex'] | informalequation/alt[@role='tex'] | +                     equation/mediaobject/textobject[@role='tex'] | +                     informalequation/mediaobject/textobject[@role='tex']" priority="1"> +  <xsl:variable name="output.delims"> +    <xsl:call-template name="tex.math.output.delims"/> +  </xsl:variable> +  <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''"> +    <xsl:processing-instruction name="xmltex"> +      <xsl:if test="$output.delims != 0"> +        <xsl:text>$$</xsl:text> +      </xsl:if> +      <xsl:value-of select="."/> +      <xsl:if test="$output.delims != 0"> +        <xsl:text>$$</xsl:text> +      </xsl:if> +    </xsl:processing-instruction> +  </xsl:if> +</xsl:template> + +<xsl:template match="alt[@role='tex']"> +  <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''"> +    <xsl:message> +      Your equation is misplaced. It should be in inlineequation, equation or informalequation. +    </xsl:message> +  </xsl:if> +</xsl:template> + +<xsl:template name="tex.math.output.delims"> +  <xsl:variable name="pi.delims"> +    <xsl:call-template name="pi-attribute"> +      <xsl:with-param name="pis" select=".//processing-instruction('dbtex')"/> +      <xsl:with-param name="attribute" select="'delims'"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:variable name="result"> +    <xsl:choose> +      <xsl:when test="$pi.delims = 'no'">0</xsl:when> +      <xsl:when test="$pi.delims = '' and $tex.math.delims = 0">0</xsl:when> +      <xsl:otherwise>1</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:value-of select="$result"/> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pagesetup.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pagesetup.xsl new file mode 100644 index 0000000..a0aa45a --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pagesetup.xsl @@ -0,0 +1,2314 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version="1.0"> + +<!-- ******************************************************************** +     $Id: pagesetup.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:param name="body.fontset"> +  <xsl:value-of select="$body.font.family"/> +  <xsl:if test="$body.font.family != '' +                and $symbol.font.family  != ''">,</xsl:if> +    <xsl:value-of select="$symbol.font.family"/> +</xsl:param> + +<xsl:param name="title.fontset"> +  <xsl:value-of select="$title.font.family"/> +  <xsl:if test="$title.font.family != '' +                and $symbol.font.family  != ''">,</xsl:if> +    <xsl:value-of select="$symbol.font.family"/> +</xsl:param> + +<!-- PassiveTeX can't handle the math expression for +     title.margin.left being negative, so ignore it. +     margin-left="{$page.margin.outer} - {$title.margin.left}" +--> +<xsl:param name="margin.left.outer"> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0"> +      <xsl:value-of select="$page.margin.outer"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$page.margin.outer"/> +      <xsl:text> - </xsl:text> +      <xsl:value-of select="$title.margin.left"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:param name="margin.left.inner"> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0"> +      <xsl:value-of select="$page.margin.inner"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$page.margin.inner"/> +      <xsl:text> - </xsl:text> +      <xsl:value-of select="$title.margin.left"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:template name="setup.pagemasters"> +  <fo:layout-master-set> +    <!-- blank pages --> +    <fo:simple-page-master master-name="blank" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">blank</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body display-align="center" +                      margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}"> +        <xsl:if test="$fop.extensions = 0 and $fop1.extensions = 0"> +          <xsl:attribute name="region-name">blank-body</xsl:attribute> +        </xsl:if> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-blank" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-blank" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <!-- title pages --> +    <fo:simple-page-master master-name="titlepage-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">titlepage-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.titlepage}" +                      column-count="{$column.count.titlepage}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="titlepage-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">titlepage-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.titlepage}" +                      column-count="{$column.count.titlepage}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="titlepage-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">titlepage-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.titlepage}" +                      column-count="{$column.count.titlepage}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <!-- list-of-title pages --> +    <fo:simple-page-master master-name="lot-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">lot-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.lot}" +                      column-count="{$column.count.lot}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="lot-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">lot-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.lot}" +                      column-count="{$column.count.lot}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="lot-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">lot-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.lot}" +                      column-count="{$column.count.lot}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <!-- frontmatter pages --> +    <fo:simple-page-master master-name="front-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">front-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.front}" +                      column-count="{$column.count.front}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="front-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">front-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.front}" +                      column-count="{$column.count.front}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="front-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">front-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.front}" +                      column-count="{$column.count.front}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                        display-align="after"/> +    </fo:simple-page-master> + +    <!-- body pages --> +    <fo:simple-page-master master-name="body-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">body-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.body}" +                      column-count="{$column.count.body}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="body-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">body-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.body}" +                      column-count="{$column.count.body}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="body-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">body-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.body}" +                      column-count="{$column.count.body}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <!-- backmatter pages --> +    <fo:simple-page-master master-name="back-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">back-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.back}" +                      column-count="{$column.count.back}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="back-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">back-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.back}" +                      column-count="{$column.count.back}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="back-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$margin.left.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">back-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.back}" +                      column-count="{$column.count.back}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <!-- index pages --> +    <fo:simple-page-master master-name="index-first" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$page.margin.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">index-first</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.index}" +                      column-count="{$column.count.index}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-first" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-first" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="index-odd" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$page.margin.inner}" +                           margin-right="{$page.margin.outer}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">index-odd</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.index}" +                      column-count="{$column.count.index}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-odd" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-odd" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <fo:simple-page-master master-name="index-even" +                           page-width="{$page.width}" +                           page-height="{$page.height}" +                           margin-top="{$page.margin.top}" +                           margin-bottom="{$page.margin.bottom}" +                           margin-left="{$page.margin.outer}" +                           margin-right="{$page.margin.inner}"> +      <xsl:if test="$axf.extensions != 0"> +        <xsl:call-template name="axf-page-master-properties"> +          <xsl:with-param name="page.master">index-even</xsl:with-param> +        </xsl:call-template> +      </xsl:if> +      <fo:region-body margin-bottom="{$body.margin.bottom}" +                      margin-top="{$body.margin.top}" +                      column-gap="{$column.gap.index}" +                      column-count="{$column.count.index}"> +      </fo:region-body> +      <fo:region-before region-name="xsl-region-before-even" +                        extent="{$region.before.extent}" +                        display-align="before"/> +      <fo:region-after region-name="xsl-region-after-even" +                       extent="{$region.after.extent}" +                       display-align="after"/> +    </fo:simple-page-master> + +    <xsl:if test="$draft.mode != 'no'"> +      <!-- draft blank pages --> +      <fo:simple-page-master master-name="blank-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">blank-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-blank" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-blank" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft title pages --> +      <fo:simple-page-master master-name="titlepage-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">titlepage-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.titlepage}" +                        column-count="{$column.count.titlepage}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="titlepage-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">titlepage-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.titlepage}" +                        column-count="{$column.count.titlepage}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="titlepage-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">titlepage-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.titlepage}" +                        column-count="{$column.count.titlepage}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft list-of-title pages --> +      <fo:simple-page-master master-name="lot-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">lot-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.lot}" +                        column-count="{$column.count.lot}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="lot-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">lot-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.lot}" +                        column-count="{$column.count.lot}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="lot-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">lot-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.lot}" +                        column-count="{$column.count.lot}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft frontmatter pages --> +      <fo:simple-page-master master-name="front-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">front-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.front}" +                        column-count="{$column.count.front}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="front-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">front-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.front}" +                        column-count="{$column.count.front}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="front-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">front-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.front}" +                        column-count="{$column.count.front}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft body pages --> +      <fo:simple-page-master master-name="body-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">body-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.body}" +                        column-count="{$column.count.body}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="body-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">body-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.body}" +                        column-count="{$column.count.body}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="body-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">body-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.body}" +                        column-count="{$column.count.body}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft backmatter pages --> +      <fo:simple-page-master master-name="back-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">back-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.back}" +                        column-count="{$column.count.back}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="back-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">back-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.back}" +                        column-count="{$column.count.back}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="back-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$margin.left.outer}" +                             margin-right="{$page.margin.inner}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">back-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.back}" +                        column-count="{$column.count.back}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <!-- draft index pages --> +      <fo:simple-page-master master-name="index-first-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$page.margin.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">index-first-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.index}" +                        column-count="{$column.count.index}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-first" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-first" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="index-odd-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-left="{$page.margin.inner}" +                             margin-right="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">index-odd-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.index}" +                        column-count="{$column.count.index}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-odd" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-odd" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> + +      <fo:simple-page-master master-name="index-even-draft" +                             page-width="{$page.width}" +                             page-height="{$page.height}" +                             margin-top="{$page.margin.top}" +                             margin-bottom="{$page.margin.bottom}" +                             margin-right="{$page.margin.inner}" +                             margin-left="{$page.margin.outer}"> +        <xsl:if test="$axf.extensions != 0"> +          <xsl:call-template name="axf-page-master-properties"> +            <xsl:with-param name="page.master">index-even-draft</xsl:with-param> +          </xsl:call-template> +        </xsl:if> +        <fo:region-body margin-bottom="{$body.margin.bottom}" +                        margin-top="{$body.margin.top}" +                        column-gap="{$column.gap.index}" +                        column-count="{$column.count.index}"> +          <xsl:if test="$draft.watermark.image != ''"> +            <xsl:attribute name="background-image"> +              <xsl:call-template name="fo-external-image"> +                <xsl:with-param name="filename" select="$draft.watermark.image"/> +              </xsl:call-template> +            </xsl:attribute> +            <xsl:attribute name="background-attachment">fixed</xsl:attribute> +            <xsl:attribute name="background-repeat">no-repeat</xsl:attribute> +            <xsl:attribute name="background-position-horizontal">center</xsl:attribute> +            <xsl:attribute name="background-position-vertical">center</xsl:attribute> +          </xsl:if> +        </fo:region-body> +        <fo:region-before region-name="xsl-region-before-even" +                          extent="{$region.before.extent}" +                          display-align="before"/> +        <fo:region-after region-name="xsl-region-after-even" +                         extent="{$region.after.extent}" +                         display-align="after"/> +      </fo:simple-page-master> +    </xsl:if> + +    <!-- setup for title page(s) --> +    <fo:page-sequence-master master-name="titlepage"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="titlepage-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="titlepage-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">titlepage-even</xsl:when> +              <xsl:otherwise>titlepage-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <!-- setup for lots --> +    <fo:page-sequence-master master-name="lot"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="lot-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="lot-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">lot-even</xsl:when> +              <xsl:otherwise>lot-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <!-- setup front matter --> +    <fo:page-sequence-master master-name="front"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="front-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="front-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">front-even</xsl:when> +              <xsl:otherwise>front-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <!-- setup for body pages --> +    <fo:page-sequence-master master-name="body"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="body-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="body-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">body-even</xsl:when> +              <xsl:otherwise>body-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <!-- setup back matter --> +    <fo:page-sequence-master master-name="back"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="back-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="back-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">back-even</xsl:when> +              <xsl:otherwise>back-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <!-- setup back matter --> +    <fo:page-sequence-master master-name="index"> +      <fo:repeatable-page-master-alternatives> +        <fo:conditional-page-master-reference master-reference="blank" +                                              blank-or-not-blank="blank"/> +        <fo:conditional-page-master-reference master-reference="index-first" +                                              page-position="first"/> +        <fo:conditional-page-master-reference master-reference="index-odd" +                                              odd-or-even="odd"/> +        <fo:conditional-page-master-reference  +                                              odd-or-even="even"> +          <xsl:attribute name="master-reference"> +            <xsl:choose> +              <xsl:when test="$double.sided != 0">index-even</xsl:when> +              <xsl:otherwise>index-odd</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +        </fo:conditional-page-master-reference> +      </fo:repeatable-page-master-alternatives> +    </fo:page-sequence-master> + +    <xsl:if test="$draft.mode != 'no'"> +      <!-- setup for draft title page(s) --> +      <fo:page-sequence-master master-name="titlepage-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="titlepage-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="titlepage-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">titlepage-even-draft</xsl:when> +                <xsl:otherwise>titlepage-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> + +      <!-- setup for draft lots --> +      <fo:page-sequence-master master-name="lot-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="lot-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="lot-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">lot-even-draft</xsl:when> +                <xsl:otherwise>lot-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> + +      <!-- setup draft front matter --> +      <fo:page-sequence-master master-name="front-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="front-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="front-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">front-even-draft</xsl:when> +                <xsl:otherwise>front-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> + +      <!-- setup for draft body pages --> +      <fo:page-sequence-master master-name="body-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="body-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="body-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">body-even-draft</xsl:when> +                <xsl:otherwise>body-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> + +      <!-- setup draft back matter --> +      <fo:page-sequence-master master-name="back-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="back-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="back-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">back-even-draft</xsl:when> +                <xsl:otherwise>back-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> + +      <!-- setup draft index pages --> +      <fo:page-sequence-master master-name="index-draft"> +        <fo:repeatable-page-master-alternatives> +          <fo:conditional-page-master-reference master-reference="blank-draft" +                                                blank-or-not-blank="blank"/> +          <fo:conditional-page-master-reference master-reference="index-first-draft" +                                                page-position="first"/> +          <fo:conditional-page-master-reference master-reference="index-odd-draft" +                                                odd-or-even="odd"/> +          <fo:conditional-page-master-reference  +                                                odd-or-even="even"> +            <xsl:attribute name="master-reference"> +              <xsl:choose> +                <xsl:when test="$double.sided != 0">index-even-draft</xsl:when> +                <xsl:otherwise>index-odd-draft</xsl:otherwise> +              </xsl:choose> +            </xsl:attribute> +          </fo:conditional-page-master-reference> +        </fo:repeatable-page-master-alternatives> +      </fo:page-sequence-master> +    </xsl:if> + +    <xsl:call-template name="user.pagemasters"/> + +    </fo:layout-master-set> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="user.pagemasters"/> <!-- intentionally empty --> + +<!-- ==================================================================== --> + +<xsl:template name="select.pagemaster"> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="pageclass" select="''"/> + +  <xsl:variable name="pagemaster"> +    <xsl:choose> +      <xsl:when test="$pageclass != ''"> +        <xsl:value-of select="$pageclass"/> +      </xsl:when> +      <xsl:when test="$pageclass = 'lot'">lot</xsl:when> +      <xsl:when test="$element = 'dedication'">front</xsl:when> +      <xsl:when test="$element = 'preface'">front</xsl:when> +      <xsl:when test="$element = 'appendix'">back</xsl:when> +      <xsl:when test="$element = 'glossary'">back</xsl:when> +      <xsl:when test="$element = 'bibliography'">back</xsl:when> +      <xsl:when test="$element = 'index'">index</xsl:when> +      <xsl:when test="$element = 'colophon'">back</xsl:when> +      <xsl:otherwise>body</xsl:otherwise> +    </xsl:choose> + +    <xsl:choose> +      <xsl:when test="$draft.mode = 'yes'"> +        <xsl:text>-draft</xsl:text> +      </xsl:when> +      <xsl:when test="$draft.mode = 'no'"> +        <!-- nop --> +      </xsl:when> +      <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'"> +        <xsl:text>-draft</xsl:text> +      </xsl:when> +      <xsl:otherwise> +        <!-- nop --> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:call-template name="select.user.pagemaster"> +    <xsl:with-param name="element" select="$element"/> +    <xsl:with-param name="pageclass" select="$pageclass"/> +    <xsl:with-param name="default-pagemaster" select="$pagemaster"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="select.user.pagemaster"> +  <xsl:param name="element"/> +  <xsl:param name="pageclass"/> +  <xsl:param name="default-pagemaster"/> + +  <!-- by default, return the default. But if you've created your own +       pagemasters in user.pagemasters, you might want to select one here. --> +  <xsl:value-of select="$default-pagemaster"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="head.sep.rule"> +  <xsl:param name="pageclass"/> +  <xsl:param name="sequence"/> +  <xsl:param name="gentext-key"/> + +  <xsl:if test="$header.rule != 0"> +    <xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute> +    <xsl:attribute name="border-bottom-style">solid</xsl:attribute> +    <xsl:attribute name="border-bottom-color">black</xsl:attribute> +  </xsl:if> +</xsl:template> + +<xsl:template name="foot.sep.rule"> +  <xsl:param name="pageclass"/> +  <xsl:param name="sequence"/> +  <xsl:param name="gentext-key"/> + +  <xsl:if test="$footer.rule != 0"> +    <xsl:attribute name="border-top-width">0.5pt</xsl:attribute> +    <xsl:attribute name="border-top-style">solid</xsl:attribute> +    <xsl:attribute name="border-top-color">black</xsl:attribute> +  </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="running.head.mode"> +  <xsl:param name="master-reference" select="'unknown'"/> +  <xsl:param name="gentext-key" select="local-name(.)"/> + +  <!-- remove -draft from reference --> +  <xsl:variable name="pageclass"> +    <xsl:choose> +      <xsl:when test="contains($master-reference, '-draft')"> +        <xsl:value-of select="substring-before($master-reference, '-draft')"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$master-reference"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:static-content flow-name="xsl-region-before-first"> +    <fo:block xsl:use-attribute-sets="header.content.properties"> +      <xsl:call-template name="header.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'first'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-before-odd"> +    <fo:block xsl:use-attribute-sets="header.content.properties"> +      <xsl:call-template name="header.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'odd'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-before-even"> +    <fo:block xsl:use-attribute-sets="header.content.properties"> +      <xsl:call-template name="header.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'even'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-before-blank"> +    <fo:block xsl:use-attribute-sets="header.content.properties"> +      <xsl:call-template name="header.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'blank'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <xsl:call-template name="footnote-separator"/> + +  <xsl:if test="$fop.extensions = 0 and $fop1.extensions = 0"> +    <xsl:call-template name="blank.page.content"/> +  </xsl:if> +</xsl:template> + +<xsl:template name="footnote-separator"> +  <fo:static-content flow-name="xsl-footnote-separator"> +    <fo:block> +      <fo:leader xsl:use-attribute-sets="footnote.sep.leader.properties"/> +    </fo:block> +  </fo:static-content> +</xsl:template> + +<xsl:template name="blank.page.content"> +  <fo:static-content flow-name="blank-body"> +    <fo:block text-align="center"/> +  </fo:static-content> +</xsl:template> + +<xsl:template name="header.table"> +  <xsl:param name="pageclass" select="''"/> +  <xsl:param name="sequence" select="''"/> +  <xsl:param name="gentext-key" select="''"/> + +  <!-- default is a single table style for all headers --> +  <!-- Customize it for different page classes or sequence location --> + +  <xsl:choose> +      <xsl:when test="$pageclass = 'index'"> +          <xsl:attribute name="margin-left">0pt</xsl:attribute> +      </xsl:when> +  </xsl:choose> + +  <xsl:variable name="column1"> +    <xsl:choose> +      <xsl:when test="$double.sided = 0">1</xsl:when> +      <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when> +      <xsl:otherwise>3</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="column3"> +    <xsl:choose> +      <xsl:when test="$double.sided = 0">3</xsl:when> +      <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when> +      <xsl:otherwise>1</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="candidate"> +    <fo:table xsl:use-attribute-sets="header.table.properties"> +      <xsl:call-template name="head.sep.rule"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="$sequence"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> + +      <fo:table-column column-number="1"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">header</xsl:with-param> +            <xsl:with-param name="position" select="$column1"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> +      <fo:table-column column-number="2"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">header</xsl:with-param> +            <xsl:with-param name="position" select="2"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> +      <fo:table-column column-number="3"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">header</xsl:with-param> +            <xsl:with-param name="position" select="$column3"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> + +      <fo:table-body> +        <fo:table-row> +          <xsl:attribute name="block-progression-dimension.minimum"> +            <xsl:value-of select="$header.table.height"/> +          </xsl:attribute> +          <fo:table-cell text-align="left" +                         display-align="before"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="header.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'left'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +          <fo:table-cell text-align="center" +                         display-align="before"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="header.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'center'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +          <fo:table-cell text-align="right" +                         display-align="before"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="header.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'right'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +        </fo:table-row> +      </fo:table-body> +    </fo:table> +  </xsl:variable> + +  <!-- Really output a header? --> +  <xsl:choose> +    <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book' +                    and $sequence='first'"> +      <!-- no, book titlepages have no headers at all --> +    </xsl:when> +    <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0"> +      <!-- no output --> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$candidate"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="header.content"> +  <xsl:param name="pageclass" select="''"/> +  <xsl:param name="sequence" select="''"/> +  <xsl:param name="position" select="''"/> +  <xsl:param name="gentext-key" select="''"/> + +<!-- +  <fo:block> +    <xsl:value-of select="$pageclass"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$sequence"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$position"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$gentext-key"/> +  </fo:block> +--> + +  <fo:block> + +    <!-- sequence can be odd, even, first, blank --> +    <!-- position can be left, center, right --> +    <xsl:choose> +      <xsl:when test="$sequence = 'blank'"> +        <!-- nothing --> +      </xsl:when> + +      <xsl:when test="$position='left'"> +        <!-- Same for odd, even, empty, and blank sequences --> +        <xsl:call-template name="draft.text"/> +      </xsl:when> + +      <xsl:when test="($sequence='odd' or $sequence='even') and $position='center'"> +        <xsl:if test="$pageclass != 'titlepage'"> +          <xsl:choose> +            <xsl:when test="ancestor::book and ($double.sided != 0)"> +              <fo:retrieve-marker retrieve-class-name="section.head.marker" +                                  retrieve-position="first-including-carryover" +                                  retrieve-boundary="page-sequence"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="." mode="titleabbrev.markup"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:if> +      </xsl:when> + +      <xsl:when test="$position='center'"> +        <!-- nothing for empty and blank sequences --> +      </xsl:when> + +      <xsl:when test="$position='right'"> +        <!-- Same for odd, even, empty, and blank sequences --> +        <xsl:call-template name="draft.text"/> +      </xsl:when> + +      <xsl:when test="$sequence = 'first'"> +        <!-- nothing for first pages --> +      </xsl:when> + +      <xsl:when test="$sequence = 'blank'"> +        <!-- nothing for blank pages --> +      </xsl:when> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<xsl:template name="header.footer.width"> +  <xsl:param name="location" select="'header'"/> +  <xsl:param name="position" select="1"/> + +  <xsl:variable name="width.set"> +    <xsl:choose> +      <xsl:when test="$location = 'header'"> +        <xsl:value-of select="normalize-space($header.column.widths)"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="normalize-space($footer.column.widths)"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + + +  <xsl:variable name="width"> +    <xsl:choose> +      <xsl:when test="$position = 1"> +        <xsl:value-of select="substring-before($width.set, ' ')"/> +      </xsl:when> +      <xsl:when test="$position = 2"> +        <xsl:value-of select="substring-before(substring-after($width.set, ' '), ' ')"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="substring-after(substring-after($width.set, ' '), ' ')"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Make sure it is a number --> +  <xsl:choose> +    <xsl:when test = "$width = number($width)"> +      <xsl:value-of select="$width"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message>Error: value in <xsl:value-of select="$location"/>.column.widths at position <xsl:value-of select="$position"/> is not a number.</xsl:message> +      <xsl:text>1</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="draft.text"> +  <xsl:choose> +    <xsl:when test="$draft.mode = 'yes'"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'Draft'"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:when test="$draft.mode = 'no'"> +      <!-- nop --> +    </xsl:when> +    <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'Draft'"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <!-- nop --> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="running.foot.mode"> +  <xsl:param name="master-reference" select="'unknown'"/> +  <xsl:param name="gentext-key" select="local-name(.)"/> + +  <!-- remove -draft from reference --> +  <xsl:variable name="pageclass"> +    <xsl:choose> +      <xsl:when test="contains($master-reference, '-draft')"> +        <xsl:value-of select="substring-before($master-reference, '-draft')"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$master-reference"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:static-content flow-name="xsl-region-after-first"> +    <fo:block xsl:use-attribute-sets="footer.content.properties"> +      <xsl:call-template name="footer.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'first'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-after-odd"> +    <fo:block xsl:use-attribute-sets="footer.content.properties"> +      <xsl:call-template name="footer.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'odd'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-after-even"> +    <fo:block xsl:use-attribute-sets="footer.content.properties"> +      <xsl:call-template name="footer.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'even'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> + +  <fo:static-content flow-name="xsl-region-after-blank"> +    <fo:block xsl:use-attribute-sets="footer.content.properties"> +      <xsl:call-template name="footer.table"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="'blank'"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +    </fo:block> +  </fo:static-content> +</xsl:template> + +<xsl:template name="footer.table"> +  <xsl:param name="pageclass" select="''"/> +  <xsl:param name="sequence" select="''"/> +  <xsl:param name="gentext-key" select="''"/> + +  <!-- default is a single table style for all footers --> +  <!-- Customize it for different page classes or sequence location --> + +  <xsl:choose> +      <xsl:when test="$pageclass = 'index'"> +          <xsl:attribute name="margin-left">0pt</xsl:attribute> +      </xsl:when> +  </xsl:choose> + +  <xsl:variable name="column1"> +    <xsl:choose> +      <xsl:when test="$double.sided = 0">1</xsl:when> +      <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when> +      <xsl:otherwise>3</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="column3"> +    <xsl:choose> +      <xsl:when test="$double.sided = 0">3</xsl:when> +      <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when> +      <xsl:otherwise>1</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="candidate"> +    <fo:table xsl:use-attribute-sets="footer.table.properties"> +      <xsl:call-template name="foot.sep.rule"> +        <xsl:with-param name="pageclass" select="$pageclass"/> +        <xsl:with-param name="sequence" select="$sequence"/> +        <xsl:with-param name="gentext-key" select="$gentext-key"/> +      </xsl:call-template> +      <fo:table-column column-number="1"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">footer</xsl:with-param> +            <xsl:with-param name="position" select="$column1"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> +      <fo:table-column column-number="2"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">footer</xsl:with-param> +            <xsl:with-param name="position" select="2"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> +      <fo:table-column column-number="3"> +        <xsl:attribute name="column-width"> +          <xsl:text>proportional-column-width(</xsl:text> +          <xsl:call-template name="header.footer.width"> +            <xsl:with-param name="location">footer</xsl:with-param> +            <xsl:with-param name="position" select="$column3"/> +          </xsl:call-template> +          <xsl:text>)</xsl:text> +        </xsl:attribute> +      </fo:table-column> + +      <fo:table-body> +        <fo:table-row> +          <xsl:attribute name="block-progression-dimension.minimum"> +            <xsl:value-of select="$footer.table.height"/> +          </xsl:attribute> +          <fo:table-cell text-align="left" +                         display-align="after"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="footer.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'left'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +          <fo:table-cell text-align="center" +                         display-align="after"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="footer.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'center'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +          <fo:table-cell text-align="right" +                         display-align="after"> +            <xsl:if test="$fop.extensions = 0"> +              <xsl:attribute name="relative-align">baseline</xsl:attribute> +            </xsl:if> +            <fo:block> +              <xsl:call-template name="footer.content"> +                <xsl:with-param name="pageclass" select="$pageclass"/> +                <xsl:with-param name="sequence" select="$sequence"/> +                <xsl:with-param name="position" select="'right'"/> +                <xsl:with-param name="gentext-key" select="$gentext-key"/> +              </xsl:call-template> +            </fo:block> +          </fo:table-cell> +        </fo:table-row> +      </fo:table-body> +    </fo:table> +  </xsl:variable> + +  <!-- Really output a footer? --> +  <xsl:choose> +    <xsl:when test="$pageclass='titlepage' and $gentext-key='book' +                    and $sequence='first'"> +      <!-- no, book titlepages have no footers at all --> +    </xsl:when> +    <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0"> +      <!-- no output --> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$candidate"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="footer.content"> +  <xsl:param name="pageclass" select="''"/> +  <xsl:param name="sequence" select="''"/> +  <xsl:param name="position" select="''"/> +  <xsl:param name="gentext-key" select="''"/> + +<!-- +  <fo:block> +    <xsl:value-of select="$pageclass"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$sequence"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$position"/> +    <xsl:text>, </xsl:text> +    <xsl:value-of select="$gentext-key"/> +  </fo:block> +--> + +  <fo:block> +    <!-- pageclass can be front, body, back --> +    <!-- sequence can be odd, even, first, blank --> +    <!-- position can be left, center, right --> +    <xsl:choose> +      <xsl:when test="$pageclass = 'titlepage'"> +        <!-- nop; no footer on title pages --> +      </xsl:when> + +      <xsl:when test="$double.sided != 0 and $sequence = 'even' +                      and $position='left'"> +        <fo:page-number/> +      </xsl:when> + +      <xsl:when test="$double.sided != 0 and ($sequence = 'odd' or $sequence = 'first') +                      and $position='right'"> +        <fo:page-number/> +      </xsl:when> + +      <xsl:when test="$double.sided = 0 and $position='center'"> +        <fo:page-number/> +      </xsl:when> + +      <xsl:when test="$sequence='blank'"> +        <xsl:choose> +          <xsl:when test="$double.sided != 0 and $position = 'left'"> +            <fo:page-number/> +          </xsl:when> +          <xsl:when test="$double.sided = 0 and $position = 'center'"> +            <fo:page-number/> +          </xsl:when> +          <xsl:otherwise> +            <!-- nop --> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:when> + + +      <xsl:otherwise> +        <!-- nop --> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="page.number.format"> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="master-reference" select="''"/> + +  <xsl:choose> +    <xsl:when test="$element = 'toc' and self::book">i</xsl:when> +    <xsl:when test="$element = 'preface'">i</xsl:when> +    <xsl:when test="$element = 'dedication'">i</xsl:when> +    <xsl:otherwise>1</xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="initial.page.number"> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="master-reference" select="''"/> + +  <!-- Select the first content that the stylesheet places +       after the TOC --> +  <xsl:variable name="first.book.content"  +                select="ancestor::book/*[ +                          not(self::title or +                              self::subtitle or +                              self::titleabbrev or +                              self::bookinfo or +                              self::info or +                              self::dedication or +                              self::preface or +                              self::toc or +                              self::lot)][1]"/> +  <xsl:choose> +    <!-- double-sided output --> +    <xsl:when test="$double.sided != 0"> +      <xsl:choose> +        <xsl:when test="$element = 'toc'">auto-odd</xsl:when> +        <xsl:when test="$element = 'book'">1</xsl:when> +        <!-- preface typically continues TOC roman numerals --> +        <!-- Change page.number.format if not --> +        <xsl:when test="$element = 'preface'">auto-odd</xsl:when> +        <xsl:when test="($element = 'dedication' or $element = 'article')  +                    and not(preceding::chapter +                            or preceding::preface +                            or preceding::appendix +                            or preceding::article +                            or preceding::dedication +                            or parent::part +                            or parent::reference)">1</xsl:when> +        <xsl:when test="generate-id($first.book.content) = +                        generate-id(.)">1</xsl:when> +        <xsl:otherwise>auto-odd</xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <!-- single-sided output --> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$element = 'toc'">auto</xsl:when> +        <xsl:when test="$element = 'book'">1</xsl:when> +        <xsl:when test="$element = 'preface'">auto</xsl:when> +       <xsl:when test="($element = 'dedication' or $element = 'article') and +                        not(preceding::chapter +                            or preceding::preface +                            or preceding::appendix +                            or preceding::article +                            or preceding::dedication +                            or parent::part +                            or parent::reference)">1</xsl:when> +        <xsl:when test="generate-id($first.book.content) = +                        generate-id(.)">1</xsl:when> +        <xsl:otherwise>auto</xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="force.page.count"> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="master-reference" select="''"/> + +  <xsl:choose> +    <!-- double-sided output --> +    <xsl:when test="$double.sided != 0">end-on-even</xsl:when> +    <!-- single-sided output --> +    <xsl:otherwise>no-force</xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="set.flow.properties"> +  <xsl:param name="element" select="local-name(.)"/> +  <xsl:param name="master-reference" select="''"/> + +  <!-- This template is called after each <fo:flow> starts. --> +  <!-- Customize this template to set attributes on fo:flow --> + +  <!-- remove -draft from reference --> +  <xsl:variable name="pageclass"> +    <xsl:choose> +      <xsl:when test="contains($master-reference, '-draft')"> +        <xsl:value-of select="substring-before($master-reference, '-draft')"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$master-reference"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0 or $passivetex.extensions != 0"> +      <!-- body.start.indent does not work well with these processors --> +    </xsl:when> +    <xsl:when test="starts-with($pageclass, 'body') or +                    starts-with($pageclass, 'lot') or +                    starts-with($pageclass, 'front') or +                    $element = 'preface' or +                    (starts-with($pageclass, 'back') and +                    $element = 'appendix')"> +      <xsl:attribute name="start-indent"> +        <xsl:value-of select="$body.start.indent"/> +      </xsl:attribute> +      <xsl:attribute name="end-indent"> +        <xsl:value-of select="$body.end.indent"/> +      </xsl:attribute> +    </xsl:when> +  </xsl:choose> + +</xsl:template> +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/param.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/param.xsl new file mode 100644 index 0000000..372e372 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/param.xsl @@ -0,0 +1,891 @@ +<?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.xsl 8369 2007-09-09 08:55:14Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<xsl:attribute-set name="abstract.properties"> +  <xsl:attribute name="start-indent">0.0in</xsl:attribute> +  <xsl:attribute name="end-indent">0.0in</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="abstract.title.properties"> +  <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"/></xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"/></xsl:attribute> +  <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"/></xsl:attribute> +  <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"/></xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="admon.graphics.extension">.png</xsl:param> +<xsl:param name="admon.graphics" select="0"/> +<xsl:param name="admon.graphics.path">images/</xsl:param> +<xsl:param name="admon.textlabel" select="1"/> +<xsl:attribute-set name="admonition.properties"/> +<xsl:attribute-set name="admonition.title.properties"> +  <xsl:attribute name="font-size">14pt</xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="graphical.admonition.properties"> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="nongraphical.admonition.properties"> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="margin-left">0.25in</xsl:attribute> +  <xsl:attribute name="margin-right">0.25in</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="alignment">justify</xsl:param> +<xsl:param name="appendix.autolabel">A</xsl:param> +<xsl:param name="arbortext.extensions" select="0"/> +<xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties                          section.title.level1.properties"> +  <xsl:attribute name="margin-left"> +    <xsl:value-of select="$title.margin.left"/> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:param name="author.othername.in.middle" select="1"/> +<xsl:param name="autotoc.label.separator">. </xsl:param> +<xsl:param name="axf.extensions" select="0"/> +<xsl:param name="biblioentry.item.separator">. </xsl:param> +<xsl:attribute-set name="biblioentry.properties" use-attribute-sets="normal.para.spacing"> +  <xsl:attribute name="start-indent">0.5in</xsl:attribute> +  <xsl:attribute name="text-indent">-0.5in</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param> + +<xsl:param name="bibliography.numbered" select="0"/> +<xsl:param name="bibliography.style">normal</xsl:param> +<xsl:attribute-set name="blockquote.properties"> +<xsl:attribute name="margin-left">0.5in</xsl:attribute> +<xsl:attribute name="margin-right">0.5in</xsl:attribute> +<xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> +<xsl:attribute name="space-after.optimum">1em</xsl:attribute> +<xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="body.font.family">serif</xsl:param> +<xsl:param name="body.font.master">10</xsl:param> +<xsl:param name="body.font.size"> + <xsl:value-of select="$body.font.master"/><xsl:text>pt</xsl:text> +</xsl:param> +<xsl:param name="body.margin.bottom">0.5in</xsl:param> +<xsl:param name="body.margin.top">0.5in</xsl:param> +<xsl:param name="body.start.indent"> +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0">0pt</xsl:when> +    <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when> +    <xsl:otherwise>4pc</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="body.end.indent">0pt</xsl:param> +<xsl:param name="bridgehead.in.toc" select="0"/> +<xsl:param name="callout.defaultcolumn">60</xsl:param> + +<xsl:param name="callout.graphics.extension">.svg</xsl:param> +<xsl:param name="callout.graphics" select="1"/> +<xsl:param name="callout.icon.size">7pt</xsl:param> + +<xsl:param name="callout.graphics.number.limit">30</xsl:param> +<xsl:param name="callout.graphics.path">images/callouts/</xsl:param> +<xsl:param name="callout.unicode.font">ZapfDingbats</xsl:param> +<xsl:param name="callout.unicode" select="0"/> +<xsl:param name="callout.unicode.number.limit">10</xsl:param> +<xsl:param name="callout.unicode.start.character">10102</xsl:param> +<xsl:param name="callouts.extension" select="1"/> +<xsl:param name="chapter.autolabel" select="1"/> +<xsl:param name="collect.xref.targets">no</xsl:param> +<xsl:param name="column.count.back" select="1"/> +<xsl:param name="column.count.body" select="1"/> +<xsl:param name="column.count.front" select="1"/> +<xsl:param name="column.count.index">2</xsl:param> +<xsl:param name="column.count.lot" select="1"/> +<xsl:param name="column.count.titlepage" select="1"/> +<xsl:param name="column.gap.back">12pt</xsl:param> +<xsl:param name="column.gap.body">12pt</xsl:param> +<xsl:param name="column.gap.front">12pt</xsl:param> +<xsl:param name="column.gap.index">12pt</xsl:param> +<xsl:param name="column.gap.lot">12pt</xsl:param> +<xsl:param name="column.gap.titlepage">12pt</xsl:param> +<xsl:attribute-set name="compact.list.item.spacing"> +  <xsl:attribute name="space-before.optimum">0em</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">0.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="component.label.includes.part.label" select="0"/> +<xsl:attribute-set name="component.title.properties"> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"/></xsl:attribute> +  <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"/></xsl:attribute> +  <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"/></xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="text-align"> +    <xsl:choose> +      <xsl:when test="((parent::article | parent::articleinfo | parent::info/parent::article) and not(ancestor::book) and not(self::bibliography))         or (parent::slides | parent::slidesinfo)">center</xsl:when> +      <xsl:otherwise>left</xsl:otherwise> +    </xsl:choose> +  </xsl:attribute> +  <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="component.titlepage.properties"> +</xsl:attribute-set> +<xsl:param name="crop.marks" select="0"/> +<xsl:param name="crop.mark.width">0.5pt</xsl:param> +<xsl:param name="crop.mark.offset">24pt</xsl:param> +<xsl:param name="crop.mark.bleed">6pt</xsl:param> +<xsl:param name="current.docid"/> +<xsl:param name="default.float.class"> +  <xsl:choose> +    <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when> +    <xsl:otherwise>before</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="default.image.width"/> +<xsl:param name="default.table.width"/> +<xsl:param name="default.table.frame">all</xsl:param> +<xsl:param name="default.units">pt</xsl:param> +<xsl:param name="dingbat.font.family">serif</xsl:param> +<xsl:param name="double.sided" select="0"/> +<xsl:param name="draft.mode">maybe</xsl:param> +<xsl:param name="draft.watermark.image">http://docbook.sourceforge.net/release/images/draft.png</xsl:param> + +<xsl:param name="ebnf.assignment"> +  <fo:inline xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$monospace.font.family}"> +    <xsl:text>::=</xsl:text> +  </fo:inline> +</xsl:param> + +<xsl:param name="ebnf.statement.terminator"/> +<xsl:param name="email.delimiters.enabled" select="1"/> +<xsl:attribute-set name="equation.properties" use-attribute-sets="formal.object.properties"/> +<xsl:attribute-set name="example.properties" use-attribute-sets="formal.object.properties"/> +<xsl:attribute-set name="figure.properties" use-attribute-sets="formal.object.properties"/> +<xsl:param name="firstterm.only.link" select="0"/> +<xsl:attribute-set name="footer.content.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$body.fontset"/> +  </xsl:attribute> +  <xsl:attribute name="margin-left"> +    <xsl:value-of select="$title.margin.left"/> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:param name="footer.rule" select="1"/> +<xsl:param name="footer.column.widths">1 1 1</xsl:param> +<xsl:param name="footer.table.height">14pt</xsl:param> +<xsl:attribute-set name="footer.table.properties"> +  <xsl:attribute name="table-layout">fixed</xsl:attribute> +  <xsl:attribute name="width">100%</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="footers.on.blank.pages" select="1"/> +<xsl:param name="footnote.font.size"> + <xsl:value-of select="$body.font.master * 0.8"/><xsl:text>pt</xsl:text> +</xsl:param> +<xsl:param name="footnote.number.format">1</xsl:param> +<xsl:param name="footnote.number.symbols"/> +<xsl:attribute-set name="footnote.mark.properties"> +  <xsl:attribute name="font-size">75%</xsl:attribute> +  <xsl:attribute name="font-weight">normal</xsl:attribute> +  <xsl:attribute name="font-style">normal</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="footnote.properties"> +  <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"/></xsl:attribute> +  <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"/></xsl:attribute> +  <xsl:attribute name="font-weight">normal</xsl:attribute> +  <xsl:attribute name="font-style">normal</xsl:attribute> +  <xsl:attribute name="text-align"><xsl:value-of select="$alignment"/></xsl:attribute> +  <xsl:attribute name="start-indent">0pt</xsl:attribute> +  <xsl:attribute name="text-indent">0pt</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="footnote.sep.leader.properties"> +  <xsl:attribute name="color">black</xsl:attribute> +  <xsl:attribute name="leader-pattern">rule</xsl:attribute> +  <xsl:attribute name="leader-length">1in</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="fop.extensions" select="0"/> +<xsl:param name="fop1.extensions" select="0"/> +<xsl:attribute-set name="formal.object.properties"> +  <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">2em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">2em</xsl:attribute> +  <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="formal.procedures" select="1"/> +<xsl:param name="formal.title.placement"> +figure before +example before +equation before +table before +procedure before +task before +</xsl:param> +<xsl:attribute-set name="formal.title.properties" use-attribute-sets="normal.para.spacing"> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.2"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">0.6em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">0.8em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="funcsynopsis.decoration" select="1"/> +<xsl:param name="funcsynopsis.style">kr</xsl:param> +<xsl:param name="function.parens" select="0"/> +<xsl:param name="generate.index" select="1"/> +<xsl:param name="generate.section.toc.level" select="0"/> + +<xsl:param name="generate.toc"> +/appendix toc,title +article/appendix  nop +/article  toc,title +book      toc,title,figure,table,example,equation +/chapter  toc,title +part      toc,title +/preface  toc,title +reference toc,title +/sect1    toc +/sect2    toc +/sect3    toc +/sect4    toc +/sect5    toc +/section  toc +set       toc,title +</xsl:param> +<xsl:param name="glossary.as.blocks" select="0"/> +<xsl:param name="glossary.collection"/> +<xsl:param name="glossary.sort" select="0"/> +<xsl:param name="glossentry.show.acronym">no</xsl:param> +<xsl:param name="glosslist.as.blocks" select="0"/> +<xsl:param name="glossterm.auto.link" select="0"/> +<xsl:param name="glossterm.separation">0.25in</xsl:param> +<xsl:param name="glossterm.width">2in</xsl:param> +<xsl:param name="graphic.default.extension"/> +<xsl:attribute-set name="header.content.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$body.fontset"/> +  </xsl:attribute> +  <xsl:attribute name="margin-left"> +    <xsl:value-of select="$title.margin.left"/> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:param name="header.rule" select="1"/> +<xsl:param name="header.column.widths">1 1 1</xsl:param> +<xsl:param name="header.table.height">14pt</xsl:param> +<xsl:attribute-set name="header.table.properties"> +  <xsl:attribute name="table-layout">fixed</xsl:attribute> +  <xsl:attribute name="width">100%</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="headers.on.blank.pages" select="1"/> +<xsl:param name="highlight.default.language"/> +<xsl:param name="highlight.source" select="0"/> +<xsl:param name="hyphenate">true</xsl:param> +<xsl:param name="hyphenate.verbatim" select="0"/> +<xsl:param name="hyphenate.verbatim.characters"/> +<xsl:param name="ignore.image.scaling" select="0"/> +<xsl:param name="img.src.path"/> +<xsl:param name="index.method">basic</xsl:param> +<xsl:param name="index.on.role" select="0"/> +<xsl:param name="index.on.type" select="0"/> +<xsl:attribute-set name="index.page.number.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="informalequation.properties" use-attribute-sets="informal.object.properties"/> +<xsl:attribute-set name="informalexample.properties" use-attribute-sets="informal.object.properties"/> +<xsl:attribute-set name="informalfigure.properties" use-attribute-sets="informal.object.properties"/> +<xsl:attribute-set name="informal.object.properties"> +  <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">2em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="informaltable.properties" use-attribute-sets="informal.object.properties"/> +<xsl:attribute-set name="index.preferred.page.properties"> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="index.div.title.properties"> +  <xsl:attribute name="margin-left">0pt</xsl:attribute> +  <xsl:attribute name="font-size">14.4pt</xsl:attribute> +  <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"/></xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master,'pt')"/></xsl:attribute> +  <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master,'pt * 0.8')"/></xsl:attribute> +  <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master,'pt * 1.2')"/></xsl:attribute> +  <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="index.entry.properties"> +  <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="index.number.separator"/> +<xsl:param name="index.range.separator"/> +<xsl:param name="index.term.separator"/> +<xsl:param name="insert.link.page.number">no</xsl:param> +<xsl:param name="insert.xref.page.number">no</xsl:param> +<xsl:attribute-set name="itemizedlist.properties" use-attribute-sets="list.block.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="itemizedlist.label.properties"> +</xsl:attribute-set> +    <xsl:param name="itemizedlist.label.width">1.0em</xsl:param> +   + +<xsl:param name="keep.relative.image.uris" select="0"/> +<xsl:param name="l10n.gentext.default.language">en</xsl:param> +<xsl:param name="l10n.gentext.language"/> +<xsl:param name="l10n.gentext.use.xref.language" select="0"/> +<xsl:param name="l10n.lang.value.rfc.compliant" select="1"/> +<xsl:param name="label.from.part" select="0"/> +<xsl:param name="line-height">normal</xsl:param> +<xsl:param name="linenumbering.everyNth">5</xsl:param> +<xsl:param name="linenumbering.extension" select="1"/> +<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param> +<xsl:param name="linenumbering.width">3</xsl:param> +<xsl:attribute-set name="list.block.properties"> +  <xsl:attribute name="provisional-label-separation">0.2em</xsl:attribute> +  <xsl:attribute name="provisional-distance-between-starts">1.5em</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="list.block.spacing"> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="list.item.spacing"> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="make.index.markup" select="0"/> +<xsl:param name="make.single.year.ranges" select="0"/> +<xsl:param name="make.year.ranges" select="0"/> +<xsl:attribute-set name="margin.note.properties"> +  <xsl:attribute name="font-size">90%</xsl:attribute> +  <xsl:attribute name="text-align">start</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="margin.note.title.properties"> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="text-align">start</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="margin.note.float.type">none</xsl:param> +<xsl:param name="margin.note.width">1in</xsl:param> +<xsl:param name="marker.section.level">2</xsl:param> +<xsl:param name="menuchoice.menu.separator"> → </xsl:param> +<xsl:param name="menuchoice.separator">+</xsl:param> +<xsl:param name="monospace.font.family">monospace</xsl:param> +<xsl:attribute-set name="monospace.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$monospace.font.family"/> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="monospace.verbatim.properties" use-attribute-sets="verbatim.properties monospace.properties"> +  <xsl:attribute name="text-align">start</xsl:attribute> +  <xsl:attribute name="wrap-option">no-wrap</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="nominal.table.width">6in</xsl:param> +<xsl:attribute-set name="normal.para.spacing"> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="olink.doctitle">no</xsl:param>  +<xsl:param name="olink.base.uri"/> +<xsl:param name="olink.debug" select="0"/> +<xsl:attribute-set name="olink.properties"> +  <xsl:attribute name="show-destination">replace</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="olink.lang.fallback.sequence"/> +<xsl:attribute-set name="orderedlist.properties" use-attribute-sets="list.block.properties"> +  <xsl:attribute name="provisional-distance-between-starts">2em</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="orderedlist.label.properties"> +</xsl:attribute-set> +<xsl:param name="orderedlist.label.width">1.2em</xsl:param> +<xsl:param name="prefer.internal.olink" select="0"/> +<xsl:param name="insert.olink.page.number">no</xsl:param> +<xsl:param name="insert.olink.pdf.frag" select="0"/> +<xsl:param name="page.height"> +  <xsl:choose> +    <xsl:when test="$page.orientation = 'portrait'"> +      <xsl:value-of select="$page.height.portrait"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$page.width.portrait"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="page.height.portrait"> +  <xsl:choose> +    <xsl:when test="$paper.type = 'A4landscape'">210mm</xsl:when> +    <xsl:when test="$paper.type = 'USletter'">11in</xsl:when> +    <xsl:when test="$paper.type = 'USlandscape'">8.5in</xsl:when> +    <xsl:when test="$paper.type = '4A0'">2378mm</xsl:when> +    <xsl:when test="$paper.type = '2A0'">1682mm</xsl:when> +    <xsl:when test="$paper.type = 'A0'">1189mm</xsl:when> +    <xsl:when test="$paper.type = 'A1'">841mm</xsl:when> +    <xsl:when test="$paper.type = 'A2'">594mm</xsl:when> +    <xsl:when test="$paper.type = 'A3'">420mm</xsl:when> +    <xsl:when test="$paper.type = 'A4'">297mm</xsl:when> +    <xsl:when test="$paper.type = 'A5'">210mm</xsl:when> +    <xsl:when test="$paper.type = 'A6'">148mm</xsl:when> +    <xsl:when test="$paper.type = 'A7'">105mm</xsl:when> +    <xsl:when test="$paper.type = 'A8'">74mm</xsl:when> +    <xsl:when test="$paper.type = 'A9'">52mm</xsl:when> +    <xsl:when test="$paper.type = 'A10'">37mm</xsl:when> +    <xsl:when test="$paper.type = 'B0'">1414mm</xsl:when> +    <xsl:when test="$paper.type = 'B1'">1000mm</xsl:when> +    <xsl:when test="$paper.type = 'B2'">707mm</xsl:when> +    <xsl:when test="$paper.type = 'B3'">500mm</xsl:when> +    <xsl:when test="$paper.type = 'B4'">353mm</xsl:when> +    <xsl:when test="$paper.type = 'B5'">250mm</xsl:when> +    <xsl:when test="$paper.type = 'B6'">176mm</xsl:when> +    <xsl:when test="$paper.type = 'B7'">125mm</xsl:when> +    <xsl:when test="$paper.type = 'B8'">88mm</xsl:when> +    <xsl:when test="$paper.type = 'B9'">62mm</xsl:when> +    <xsl:when test="$paper.type = 'B10'">44mm</xsl:when> +    <xsl:when test="$paper.type = 'C0'">1297mm</xsl:when> +    <xsl:when test="$paper.type = 'C1'">917mm</xsl:when> +    <xsl:when test="$paper.type = 'C2'">648mm</xsl:when> +    <xsl:when test="$paper.type = 'C3'">458mm</xsl:when> +    <xsl:when test="$paper.type = 'C4'">324mm</xsl:when> +    <xsl:when test="$paper.type = 'C5'">229mm</xsl:when> +    <xsl:when test="$paper.type = 'C6'">162mm</xsl:when> +    <xsl:when test="$paper.type = 'C7'">114mm</xsl:when> +    <xsl:when test="$paper.type = 'C8'">81mm</xsl:when> +    <xsl:when test="$paper.type = 'C9'">57mm</xsl:when> +    <xsl:when test="$paper.type = 'C10'">40mm</xsl:when> +    <xsl:otherwise>11in</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="page.margin.bottom">0.5in</xsl:param> +<xsl:param name="page.margin.inner"> +  <xsl:choose> +    <xsl:when test="$double.sided != 0">1.25in</xsl:when> +    <xsl:otherwise>1in</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="page.margin.outer"> +  <xsl:choose> +    <xsl:when test="$double.sided != 0">0.75in</xsl:when> +    <xsl:otherwise>1in</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="page.margin.top">0.5in</xsl:param> +<xsl:param name="page.orientation">portrait</xsl:param> +<xsl:param name="page.width"> +  <xsl:choose> +    <xsl:when test="$page.orientation = 'portrait'"> +      <xsl:value-of select="$page.width.portrait"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$page.height.portrait"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="page.width.portrait"> +  <xsl:choose> +    <xsl:when test="$paper.type = 'USletter'">8.5in</xsl:when> +    <xsl:when test="$paper.type = '4A0'">1682mm</xsl:when> +    <xsl:when test="$paper.type = '2A0'">1189mm</xsl:when> +    <xsl:when test="$paper.type = 'A0'">841mm</xsl:when> +    <xsl:when test="$paper.type = 'A1'">594mm</xsl:when> +    <xsl:when test="$paper.type = 'A2'">420mm</xsl:when> +    <xsl:when test="$paper.type = 'A3'">297mm</xsl:when> +    <xsl:when test="$paper.type = 'A4'">210mm</xsl:when> +    <xsl:when test="$paper.type = 'A5'">148mm</xsl:when> +    <xsl:when test="$paper.type = 'A6'">105mm</xsl:when> +    <xsl:when test="$paper.type = 'A7'">74mm</xsl:when> +    <xsl:when test="$paper.type = 'A8'">52mm</xsl:when> +    <xsl:when test="$paper.type = 'A9'">37mm</xsl:when> +    <xsl:when test="$paper.type = 'A10'">26mm</xsl:when> +    <xsl:when test="$paper.type = 'B0'">1000mm</xsl:when> +    <xsl:when test="$paper.type = 'B1'">707mm</xsl:when> +    <xsl:when test="$paper.type = 'B2'">500mm</xsl:when> +    <xsl:when test="$paper.type = 'B3'">353mm</xsl:when> +    <xsl:when test="$paper.type = 'B4'">250mm</xsl:when> +    <xsl:when test="$paper.type = 'B5'">176mm</xsl:when> +    <xsl:when test="$paper.type = 'B6'">125mm</xsl:when> +    <xsl:when test="$paper.type = 'B7'">88mm</xsl:when> +    <xsl:when test="$paper.type = 'B8'">62mm</xsl:when> +    <xsl:when test="$paper.type = 'B9'">44mm</xsl:when> +    <xsl:when test="$paper.type = 'B10'">31mm</xsl:when> +    <xsl:when test="$paper.type = 'C0'">917mm</xsl:when> +    <xsl:when test="$paper.type = 'C1'">648mm</xsl:when> +    <xsl:when test="$paper.type = 'C2'">458mm</xsl:when> +    <xsl:when test="$paper.type = 'C3'">324mm</xsl:when> +    <xsl:when test="$paper.type = 'C4'">229mm</xsl:when> +    <xsl:when test="$paper.type = 'C5'">162mm</xsl:when> +    <xsl:when test="$paper.type = 'C6'">114mm</xsl:when> +    <xsl:when test="$paper.type = 'C7'">81mm</xsl:when> +    <xsl:when test="$paper.type = 'C8'">57mm</xsl:when> +    <xsl:when test="$paper.type = 'C9'">40mm</xsl:when> +    <xsl:when test="$paper.type = 'C10'">28mm</xsl:when> +    <xsl:otherwise>8.5in</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="paper.type">USletter</xsl:param> +<xsl:param name="part.autolabel">I</xsl:param> +<xsl:param name="passivetex.extensions" select="0"/> +<xsl:attribute-set name="pgwide.properties"> +  <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="preface.autolabel" select="0"/> +<xsl:param name="preferred.mediaobject.role"/> +<xsl:attribute-set name="procedure.properties" use-attribute-sets="formal.object.properties"> +  <xsl:attribute name="keep-together.within-column">auto</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="process.empty.source.toc" select="0"/> +<xsl:param name="process.source.toc" select="0"/> +<xsl:param name="profile.arch"/> +<xsl:param name="profile.audience"/> +<xsl:param name="profile.attribute"/> +<xsl:param name="profile.condition"/> +<xsl:param name="profile.conformance"/> +<xsl:param name="profile.lang"/> +<xsl:param name="profile.os"/> +<xsl:param name="profile.revision"/> +<xsl:param name="profile.revisionflag"/> +<xsl:param name="profile.role"/> +<xsl:param name="profile.security"/> +<xsl:param name="profile.separator">;</xsl:param> +<xsl:param name="profile.status"/> +<xsl:param name="profile.userlevel"/> +<xsl:param name="profile.value"/> +<xsl:param name="profile.vendor"/> +<xsl:param name="profile.wordsize"/> +<xsl:param name="punct.honorific">.</xsl:param> +<xsl:param name="qanda.defaultlabel">number</xsl:param> +<xsl:param name="qanda.in.toc" select="0"/> +<xsl:param name="qanda.nested.in.toc" select="0"/> +<xsl:param name="qanda.inherit.numeration" select="1"/> +<xsl:param name="qandadiv.autolabel" select="1"/> +<xsl:attribute-set name="qanda.title.level1.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 2.0736"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.level2.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.728"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.level3.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.44"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.level4.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.2"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.level5.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.level6.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="qanda.title.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$title.font.family"/> +  </xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <!-- font size is calculated dynamically by qanda.heading template --> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="refentry.generate.name" select="1"/> +<xsl:param name="refentry.generate.title" select="0"/> +<xsl:param name="refentry.pagebreak" select="1"/> +<xsl:attribute-set name="refentry.title.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$title.font.family"/> +  </xsl:attribute> +  <xsl:attribute name="font-size">18pt</xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="space-after">1em</xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">0.6em</xsl:attribute> +  <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute> +</xsl:attribute-set> +<xsl:param name="refentry.xref.manvolnum" select="1"/> +  <xsl:param name="reference.autolabel">I</xsl:param> +<xsl:param name="refclass.suppress" select="0"/> +<xsl:param name="region.after.extent">0.4in</xsl:param> +<xsl:param name="region.before.extent">0.4in</xsl:param> +<xsl:attribute-set name="revhistory.table.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="revhistory.table.cell.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="revhistory.title.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="root.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$body.fontset"/> +  </xsl:attribute> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.size"/> +  </xsl:attribute> +  <xsl:attribute name="text-align"> +    <xsl:value-of select="$alignment"/> +  </xsl:attribute> +  <xsl:attribute name="line-height"> +    <xsl:value-of select="$line-height"/> +  </xsl:attribute> +  <xsl:attribute name="font-selection-strategy">character-by-character</xsl:attribute> +  <xsl:attribute name="line-height-shift-adjustment">disregard-shifts</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="rootid"/> +<xsl:param name="runinhead.default.title.end.punct">.</xsl:param> +<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param> +<xsl:param name="sans.font.family">sans-serif</xsl:param> +<xsl:param name="section.autolabel" select="0"/> +<xsl:param name="section.autolabel.max.depth">8</xsl:param> +<xsl:param name="section.container.element">block</xsl:param> +<xsl:param name="section.label.includes.component.label" select="0"/> +<xsl:attribute-set name="section.title.level1.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 2.0736"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.level2.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.728"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.level3.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.44"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.level4.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master * 1.2"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.level5.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.level6.properties"> +  <xsl:attribute name="font-size"> +    <xsl:value-of select="$body.font.master"/> +    <xsl:text>pt</xsl:text> +  </xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.title.properties"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$title.font.family"/> +  </xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <!-- font size is calculated dynamically by section.heading template --> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="text-align">left</xsl:attribute> +  <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"/></xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="section.level1.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.level2.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.level3.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.level4.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.level5.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.level6.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> +<xsl:attribute-set name="section.properties"> +</xsl:attribute-set> +<xsl:param name="segmentedlist.as.table" select="0"/> +<xsl:param name="shade.verbatim" select="0"/> + +<xsl:attribute-set name="shade.verbatim.style"> +  <xsl:attribute name="background-color">#E0E0E0</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="show.comments" select="1"/> +<xsl:attribute-set name="sidebar.properties" use-attribute-sets="formal.object.properties"> +  <xsl:attribute name="border-style">solid</xsl:attribute> +  <xsl:attribute name="border-width">1pt</xsl:attribute> +  <xsl:attribute name="border-color">black</xsl:attribute> +  <xsl:attribute name="background-color">#DDDDDD</xsl:attribute> +  <xsl:attribute name="padding-left">12pt</xsl:attribute> +  <xsl:attribute name="padding-right">12pt</xsl:attribute> +  <xsl:attribute name="padding-top">6pt</xsl:attribute> +  <xsl:attribute name="padding-bottom">6pt</xsl:attribute> +  <xsl:attribute name="margin-left">0pt</xsl:attribute> +  <xsl:attribute name="margin-right">0pt</xsl:attribute> +<!-- +  <xsl:attribute name="margin-top">6pt</xsl:attribute> +  <xsl:attribute name="margin-bottom">6pt</xsl:attribute> +--> +</xsl:attribute-set> +<xsl:attribute-set name="sidebar.title.properties"> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="text-align">start</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="sidebar.float.type">none</xsl:param> +<xsl:param name="sidebar.float.width">1in</xsl:param> +<xsl:param name="simplesect.in.toc" select="0"/> +<xsl:attribute-set name="subscript.properties"> +  <xsl:attribute name="font-size">75%</xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="superscript.properties"> +  <xsl:attribute name="font-size">75%</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="symbol.font.family">Symbol,ZapfDingbats</xsl:param> + +<xsl:param name="table.cell.border.color">black</xsl:param> +<xsl:param name="table.cell.border.style">solid</xsl:param> +<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param> +<xsl:attribute-set name="table.cell.padding"> +  <xsl:attribute name="padding-left">2pt</xsl:attribute> +  <xsl:attribute name="padding-right">2pt</xsl:attribute> +  <xsl:attribute name="padding-top">2pt</xsl:attribute> +  <xsl:attribute name="padding-bottom">2pt</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="table.footnote.number.format">a</xsl:param> +<xsl:param name="table.footnote.number.symbols"/> +<xsl:attribute-set name="table.footnote.properties"> +  <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"/></xsl:attribute> +  <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"/></xsl:attribute> +  <xsl:attribute name="font-weight">normal</xsl:attribute> +  <xsl:attribute name="font-style">normal</xsl:attribute> +  <xsl:attribute name="space-before">2pt</xsl:attribute> +  <xsl:attribute name="text-align"><xsl:value-of select="$alignment"/></xsl:attribute> +</xsl:attribute-set> + +<xsl:param name="table.frame.border.color">black</xsl:param> +<xsl:param name="table.frame.border.style">solid</xsl:param> +<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param> +<xsl:attribute-set name="table.properties" use-attribute-sets="formal.object.properties"/> +<xsl:param name="tablecolumns.extension" select="1"/> +<xsl:attribute-set name="table.table.properties"> +  <xsl:attribute name="border-before-width.conditionality">retain</xsl:attribute> +  <xsl:attribute name="border-collapse">collapse</xsl:attribute> +</xsl:attribute-set> + <xsl:param name="target.database.document">olinkdb.xml</xsl:param> +<xsl:param name="targets.filename">target.db</xsl:param> +<xsl:param name="textdata.default.encoding"/> +<xsl:param name="tex.math.delims" select="1"/> +<xsl:param name="tex.math.in.alt"/> +  <xsl:param name="textinsert.extension" select="1"/> +<xsl:param name="title.font.family">sans-serif</xsl:param> +<xsl:param name="title.margin.left"> +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0">-4pc</xsl:when> +    <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when> +    <xsl:otherwise>0pt</xsl:otherwise> +  </xsl:choose> +</xsl:param> +<xsl:param name="toc.indent.width">24</xsl:param> +<!-- inconsistant point specification? --> +<xsl:attribute-set name="toc.line.properties"> +  <xsl:attribute name="text-align-last">justify</xsl:attribute> +  <xsl:attribute name="text-align">start</xsl:attribute> +  <xsl:attribute name="end-indent"><xsl:value-of select="concat($toc.indent.width, 'pt')"/></xsl:attribute> +  <xsl:attribute name="last-line-end-indent"><xsl:value-of select="concat('-', $toc.indent.width, 'pt')"/></xsl:attribute> +</xsl:attribute-set> +<xsl:attribute-set name="toc.margin.properties"> +  <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">2em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="toc.max.depth">8</xsl:param> +<xsl:param name="toc.section.depth">2</xsl:param> +<xsl:param name="ulink.footnotes" select="0"/> +<xsl:param name="ulink.hyphenate"/> +<xsl:param name="ulink.hyphenate.chars">/</xsl:param> +<xsl:param name="ulink.show" select="1"/> +<xsl:param name="use.extensions" select="0"/> +<xsl:param name="use.local.olink.style" select="0"/>  +<xsl:param name="use.role.as.xrefstyle" select="1"/> +<xsl:param name="use.role.for.mediaobject" select="1"/> +<xsl:param name="use.svg" select="1"/> +<xsl:param name="variablelist.as.blocks" select="0"/> +<xsl:param name="variablelist.max.termlength">24</xsl:param> +<xsl:param name="variablelist.term.separator">, </xsl:param> +<xsl:param name="variablelist.term.break.after">0</xsl:param> +<xsl:attribute-set name="verbatim.properties"> +  <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-before.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> +  <xsl:attribute name="space-after.optimum">1em</xsl:attribute> +  <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> +  <xsl:attribute name="hyphenate">false</xsl:attribute> +  <xsl:attribute name="wrap-option">no-wrap</xsl:attribute> +  <xsl:attribute name="white-space-collapse">false</xsl:attribute> +  <xsl:attribute name="white-space-treatment">preserve</xsl:attribute> +  <xsl:attribute name="linefeed-treatment">preserve</xsl:attribute> +  <xsl:attribute name="text-align">start</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="xep.extensions" select="0"/> +<xsl:attribute-set name="xep.index.item.properties" use-attribute-sets="index.page.number.properties"> +  <xsl:attribute name="merge-subsequent-page-numbers">true</xsl:attribute> +  <xsl:attribute name="link-back">true</xsl:attribute> +</xsl:attribute-set> +<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param> +<xsl:param name="xref.label-title.separator">: </xsl:param> +<xsl:attribute-set name="xref.properties"> +</xsl:attribute-set> +<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param> +<xsl:param name="xref.with.number.and.title" select="1"/> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/passivetex.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/passivetex.xsl new file mode 100644 index 0000000..45b3884 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/passivetex.xsl @@ -0,0 +1,36 @@ +<?xml version='1.0' encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: passivetex.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** +      This extension stops PassiveTeX from merging subsequent '-' to  +      dashes. You must set passivetex.extensions to '1' if you want get +      this functionality. +     ******************************************************************** --> + +<xsl:template name="passivetex.dash.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, '--')"> +      <xsl:variable name="rest"> +        <xsl:call-template name="passivetex.dash.subst"> +          <xsl:with-param name="string" +                          select="concat('-', substring-after($string, '--'))"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:value-of select="concat(substring-before($string, '--'), +                                   '-​', +                                   $rest)"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$string"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pdf2index b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pdf2index new file mode 100644 index 0000000..c14d8ec --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pdf2index @@ -0,0 +1,140 @@ +#!/usr/bin/perl -- # -*- Perl -*- + +# this needs some cleanup... + +my $PSTOTEXT = "pstotext"; + +my $pdf = shift @ARGV; + +my $index = ""; +my $inindex = 0; +open (F, "$PSTOTEXT $pdf |"); +while (<F>) { +    if (/^<\/index/) { +	$index .= $_; +	$inindex = 0; +    } +    $inindex = 1 if /^<index/; + +    if ($inindex) { +	$index .= $_ if /^\s*</; +    } +} + +my $cindex = ""; +while ($index =~ /^(.*?)((<phrase role=\"pageno\">.*?<\/phrase>\s*)+)/s) { +    $cindex .= $1; +    $_ = $2; +    $index = $'; # ' + +    my @pages = m/<phrase role=\"pageno\">.*?<\/phrase>\s*/sg; + +    # Expand ranges +    if ($#pages >= 0) { +	my @mpages = (); +	foreach my $page (@pages) { +	    my $pageno = &pageno($page); +	    if ($pageno =~ /^([0-9]+)[^0-9]([0-9]+)$/) { # funky - +		for (my $count = $1; $count <= $2; $count++) { +		    push (@mpages, "<phrase role=\"$pageno\">$count</phrase>"); +		} +	    } else { +		push (@mpages, $page); +	    } +	} +	@pages = sort rangesort @mpages; +    } + +    # Remove duplicates... +    if ($#pages > 0) { +	my @mpages = (); +	my $current = ""; +	foreach my $page (@pages) { +	    my $pageno = &pageno($page); +	    if ($pageno ne $current) { +		push (@mpages, $page); +		$current = $pageno; +	    } +	} +	@pages = @mpages; +    } + +    # Collapse ranges... +    if ($#pages > 1) { +	my @cpages = (); +	while (@pages) { +	    my $count = 0; +	    my $len = &rangelen($count, @pages); +	    if ($len <= 2) { +		my $page = shift @pages; +		push (@cpages, $page); +	    } else { +		my $fpage = shift @pages; +		my $lpage = ""; +		while ($len > 1) { +		    $lpage = shift @pages; +		    $len--; +		} +		my $fpno = &pageno($fpage); +		my $lpno = &pageno($lpage); +		$fpage =~ s/>$fpno</>${fpno}-$lpno</s; +		push (@cpages, $fpage); +	    } +	} +	@pages = @cpages; +    } + +    my $page = shift @pages; +    $page =~ s/\s*$//s; +    $cindex .= $page; +    while (@pages) { +	$page = shift @pages; +	$page =~ s/\s*$//s; +	$cindex .= ", $page"; +    } +} +$cindex .= $index; + +print "$cindex\n"; + +sub pageno { +    my $page = shift; + +    $page =~ s/^<phrase.*?>//; +    $page =~ s/^<link.*?>//; + +    return $1 if $page =~ /^([^<>]+)/; +    return "?"; +} + +sub rangesort { +    my $apno = &pageno($a); +    my $bpno = &pageno($b); + +    # Make sure roman pages come before arabic ones, otherwise sort them in order +    return -1 if ($apno !~ /^\d+/ && $bpno =~ /^\d+/); +    return  1 if ($apno =~ /^\d+/ && $bpno !~ /^\d+/); +    return $apno <=> $bpno; +} + +sub rangelen { +    my $count = shift; +    my @pages = @_; +    my $len = 1; +    my $inrange = 1; + +    my $current = &pageno($pages[$count]); +    while ($count < $#pages && $inrange) { +	$count++; +	my $next = &pageno($pages[$count]); +	if ($current + 1 eq $next) { +	    $current = $next; +	    $inrange = 1; +	    $len++; +	} else { +	    $inrange = 0; +	} +    } + +    return $len; +} diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pi.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pi.xsl new file mode 100644 index 0000000..5bff389 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pi.xsl @@ -0,0 +1,1008 @@ +<?xml version='1.0'?> +<xsl:stylesheet +  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +  xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" +  xmlns:fo="http://www.w3.org/1999/XSL/Format" +  xmlns:xlink="http://www.w3.org/1999/xlink" +  exclude-result-prefixes="doc" +  version='1.0'> + +<!-- ******************************************************************** +     $Id: pi.xsl 8369 2007-09-09 08:55:14Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<doc:reference xmlns=""><info><title>FO Processing Instruction Reference</title> +    <releaseinfo role="meta"> +      $Id: pi.xsl 8369 2007-09-09 08:55:14Z manuel $ +    </releaseinfo> +  </info> + +  <partintro id="partintro"> +    <title>Introduction</title> + +    <para>This is generated reference documentation for all +      user-specifiable processing instructions (PIs) in the DocBook +      XSL stylesheets for FO output. +      <note> +        <para>You add these PIs at particular points in a document to +          cause specific “exceptions†to formatting/output behavior. To +          make global changes in formatting/output behavior across an +          entire document, it’s better to do it by setting an +          appropriate stylesheet parameter (if there is one).</para> +      </note> +    </para> +  </partintro> +</doc:reference> + +<!-- ==================================================================== --> + +<doc:pi name="dbfo_background-color" xmlns=""> +  <refpurpose>Sets background color for an image</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo background-color</tag> PI before or +      after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>, +      <tag>imagedata</tag>, or <tag>videodata</tag> element) as a +      sibling to the element, to set a background color for the +      image.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo background-color="<replaceable>color</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>background-color="<replaceable>color</replaceable>"</term> +        <listitem> +          <para>An HTML color value</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="BGcolor.html" +        >Background color</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_background-color"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'background-color'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_bgcolor" xmlns=""> +  <refpurpose>Sets background color on a table row or table cell</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo bgcolor</tag> PI as child of a table row +      or cell to set a background color for that table row or cell.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo bgcolor="<replaceable>color</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term> +        <listitem> +          <para>An HTML color value</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="BGtableColor.html#CellBGColor" +        >Cell background color</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_bgcolor"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'bgcolor'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_float-type" xmlns=""> +  <refpurpose>Specifies float behavior for a sidebar</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo float-type</tag> PI to specify the float +      behavior for a <tag>sidebar</tag> (to cause the sidebar to be +      displayed as a marginal note).</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo float-type="margin.note"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>float-type="margin.note"</term> +        <listitem> +          <para>Specifies that the <tag>sidebar</tag> should be +            displayed as a marginal note.</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>sidebar.float.type parameter</parameter>, +      <parameter>sidebar.float.width parameter</parameter>,  +      <parameter>sidebar.properties attribute-set</parameter>, +      <parameter>sidebar.title.properties</parameter> +    </para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="SideFloats.html#SidebarFloats" >A sidebar as +        side float</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_float-type"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'float-type'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_glossary-presentation" xmlns=""> +  <refpurpose>Specifies presentation style for a glossary</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo glossary-presentation</tag> PI as a child of +      a <tag>glossary</tag> to control its presentation style.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo glossary-presentation="list"|"blocks"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>glossary-presentation="list"</term> +        <listitem> +          <para>Displays the glossary as a list</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>glossary-presentation="blocks"</term> +        <listitem> +          <para>Displays the glossary as blocks</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>glossary.as.blocks</parameter></para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="Glossaries.html#GlossaryFormatPrint" >Glossary +        formatting in print</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_glossary-presentation"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'glossary-presentation'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_glosslist-presentation" xmlns=""> +  <refpurpose>Specifies presentation style for a glosslist</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo glosslist-presentation</tag> PI as a child of +      a <tag>glosslist</tag> to control its presentation style.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo glosslist-presentation="list"|"blocks"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>glosslist-presentation="list"</term> +        <listitem> +          <para>Displays the glosslist as a list</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>glosslist-presentation="blocks"</term> +        <listitem> +          <para>Displays the glosslist as blocks</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>glosslist.as.blocks</parameter> </para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="Glossaries.html#GlossaryFormatPrint" >Glossary +        formatting in print</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_glosslist-presentation"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'glosslist-presentation'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_glossterm-width" xmlns=""> +  <refpurpose>Specifies the glossterm width for a glossary or +    glosslist</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo glossterm-width</tag> PI as a child of a +      <tag>glossary</tag> or <tag>glosslist</tag> to specify the +      width for output of <tag>glossterm</tag> instances in the +      output.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo glossterm-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>glossterm-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the glossterm width (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>glossterm.width</parameter>, +      <parameter>glossterm.separation</parameter> +    </para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="Glossaries.html#GlossaryFormatPrint" >Glossary +        formatting in print</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_glossterm-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'glossterm-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_keep-together" xmlns=""> +  <refpurpose>Specifies “keep†behavior for a table, example, +    figure, or equation</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo keep-together</tag> PI as a child of a +      formal object (<tag>table</tag>, <tag>example</tag>, +      <tag>figure</tag>, or <tag>equation</tag>) or their informal +      equivalents) to specify “keep†behavior for the object (to +      allow the object to “break†across a page).</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo keep-together="auto"|"always"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>keep-together="auto"</term> +        <listitem> +          <para>Enables the object to break across a page</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>keep-together="always"</term> +        <listitem> +          <para>Prevents the object from breaking across a page (the +            default stylesheet behavior)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para>formal.object.properties</para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="PageBreaking.html#KeepTogetherPI" +        >Keep-together processing instruction</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_keep-together"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'keep-together'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_label-width" xmlns=""> +  <refpurpose>Specifies the label width for a qandaset</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo 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">dbfo label-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>label-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the label width (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="QandAformat.html" +        >Q and A formatting</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_label-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'label-width'"/> +  </xsl:call-template> +</xsl:template>  + +<doc:pi name="dbfo_linenumbering.everyNth" xmlns=""> +  <refpurpose>Specifies interval for lines numbers in verbatims</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo linenumbering.everyNth</tag> PI as a child +      of a “verbatim†element – <tag>programlisting</tag>, +      <tag>screen</tag>, <tag>synopsis</tag> — to specify +      the interval at which lines are numbered.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term> +        <listitem> +          <para>Specifies numbering interval; a number is output +            before every <replaceable>N</replaceable>th line</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>linenumbering.everyNth</parameter></para> +  </refsee> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="AnnotateListing.html#LineNumbering" +        >Line numbering</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_linenumbering.everyNth"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'linenumbering.everyNth'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_linenumbering.separator" xmlns=""> +  <refpurpose>Specifies separator text for line numbers in verbatims</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo linenumbering.separator</tag> PI as a child +      of a “verbatim†element – <tag>programlisting</tag>, +      <tag>screen</tag>, <tag>synopsis</tag> — to specify +      the separator text output between the line numbers and content.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term> +        <listitem> +          <para>Specifies the text (zero or more characters)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>linenumbering.separator</parameter></para> +  </refsee> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="AnnotateListing.html#LineNumbering" +        >Line numbering</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_linenumbering.separator"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'linenumbering.separator'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_linenumbering.width" xmlns=""> +  <refpurpose>Specifies width for line numbers in verbatims</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo linenumbering.width</tag> PI as a child +      of a “verbatim†element – <tag>programlisting</tag>, +      <tag>screen</tag>, <tag>synopsis</tag> — to specify +      the width set aside for line numbers.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the width (inluding units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>linenumbering.width</parameter></para> +  </refsee> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="AnnotateListing.html#LineNumbering" +        >Line numbering</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_linenumbering.width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'linenumbering.width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_list-presentation" xmlns=""> +  <refpurpose>Specifies presentation style for a variablelist or +    segmentedlist</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo list-presentation</tag> PI as a child of +      a <tag>variablelist</tag> or <tag>segmentedlist</tag> to +      control the presentation style for the list (to cause it, for +      example, to be displayed as a table).</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo list-presentation="list"|"blocks"|"table"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>list-presentation="list"</term> +        <listitem> +          <para>Displays the list as a list</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>list-presentation="blocks"</term> +        <listitem> +          <para>(<tag>variablelist</tag> only) Displays the list as blocks</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>list-presentation="table"</term> +        <listitem> +          <para>(<tag>segmentedlist</tag> only) Displays the list as a table</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <itemizedlist> +      <listitem> +        <para><parameter>variablelist.as.blocks</parameter></para> +      </listitem> +      <listitem> +        <para><parameter>variablelist.as.table</parameter></para> +      </listitem> +    </itemizedlist> +  </refsee> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="Variablelists.html#ListIndents" +        >Variable list formatting in print</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_list-presentation"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'list-presentation'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_list-width" xmlns=""> +  <refpurpose>Specifies the width of a horizontal simplelist</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo list-width</tag> PI as a child of a +      <tag>simplelist</tag> whose <tag class="attribute">class</tag> +      value is <literal>horizontal</literal>, to specify the width +      of the <tag>simplelist</tag>.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo list-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>list-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the <tag>simplelist</tag> width (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +</doc:pi> +<xsl:template name="pi.dbfo_list-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'list-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_orientation" xmlns=""> +  <refpurpose>Specifies the orientation for table row or cell</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo orientation</tag> PI as a child of an +      <tag>table</tag> row or cell to specify the orientation +      (rotation) for the row or cell.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</term> +        <listitem> +          <para>Specifies the number of degrees by which the cell or +            row is rotated</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +</doc:pi> +<xsl:template name="pi.dbfo_orientation"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'orientation'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_pgwide" xmlns=""> +  <refpurpose>Specifies if an <tag>equation</tag> or <tag>example</tag> goes across full page width</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo pgwide</tag> PI as a child of an +      <tag>equation</tag> or <tag>example</tag> to specify that the +      content should rendered across the full width of the page.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo pgwide="0"|"1"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>pgwide="0"</term> +        <listitem> +          <para>If zero, the content is rendered across the current +            text flow</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>pgwide="1"</term> +        <listitem> +          <para>If <code>1</code> (or any non-zero value), the +            content is rendered across the full width of the page</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>pgwide.properties</parameter></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_pgwide"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'pgwide'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_rotated-width" xmlns=""> +  <refpurpose>Specifies the width for a table <tag>entry</tag> or +    <tag>row</tag></refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo rotated-width</tag> PI as a child of an +      <tag>entry</tag> or <tag>row</tag> instance to specify the +      width of that the <tag>entry</tag> or <tag>row</tag>; or +      use it higher up in table to cause the width to be inherited +      recursively down.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo rotated-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>rotated-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the width of a row or cell (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +</doc:pi> +<xsl:template name="pi.dbfo_rotated-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'rotated-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_sidebar-width" xmlns=""> +  <refpurpose>Specifies the width of a sidebar</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo sidebar-width</tag> PI as a child of a +      <tag>sidebar</tag> to specify the width of the sidebar.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo sidebar-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>sidebar-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the <tag>sidebar</tag> width (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="params"> +    <para><parameter>sidebar.float.type parameter</parameter>, +      <parameter>sidebar.float.width parameter</parameter>,  +      <parameter>sidebar.properties attribute-set</parameter>, +      <parameter>sidebar.title.properties</parameter> +    </para> +  </refsee> +  <refsee role="tcg"> +    <para><link xlink:href="SideFloats.html#SidebarFloats" >A sidebar as +        side float</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_sidebar-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'sidebar-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_start" xmlns=""> +  <refpurpose>(obsolete) Sets the starting number on an ordered list</refpurpose> +  <refdescription> +    <para><emphasis>This PI is obsolete</emphasis>. The intent of +      it was to provide a means for setting a specific starting +      number for an ordered list. Instead of this PI, set a value +      for the <literal>override</literal> attribute on the first +      <tag>listitem</tag> in the list; that will have the same +      effect as what this PI was intended for.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo start="<replaceable>character</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>start="<replaceable>character</replaceable>"</term> +        <listitem> +          <para>Specifies the character to use as the starting +            number; use 0-9, a-z, A-Z, or lowercase or uppercase +            Roman numerals</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="Orderedlists.html#ListStartNum" +        >List starting number</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_start"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="pi-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'start'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_table-width" xmlns=""> +  <refpurpose>Specifies the width for a table or for revhistory +    output</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo table-width</tag> PI as a child or +      sibling of a <tag>table</tag>, or as a child of an +      <tag>informaltable</tag>, <tag>entrybl</tag>, or +      <tag>revhistory</tag> instance (which is rendered as a table +      in output) to specify the width of the table in output.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo table-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>table-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the table width (including units or as a percentage)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="Tables.html#TableWidth" +        >Table width</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_table-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'table-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_term-width" xmlns=""> +  <refpurpose>Specifies the term width for a variablelist</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo term-width</tag> PI as a child of a +      <tag>variablelist</tag> to specify the width for +      <tag>term</tag> output.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo term-width="<replaceable>width</replaceable>"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>term-width="<replaceable>width</replaceable>"</term> +        <listitem> +          <para>Specifies the term width (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="Variablelists.html#ListIndents" +        >Variable list formatting in print</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_term-width"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'term-width'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo_toc" xmlns=""> +  <refpurpose>Specifies whether a TOC should be generated for a qandaset</refpurpose> +  <refdescription> +    <para>Use the <tag class="xmlpi">dbfo toc</tag> PI as a child of a +      <tag>qandaset</tag> to specify whether a table of contents +      (TOC) is generated for the <tag>qandaset</tag>.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo toc="0"|"1"</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>toc="0"</term> +        <listitem> +          <para>If zero, no TOC is generated</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>toc="1"</term> +        <listitem> +          <para>If <code>1</code> (or any non-zero value), +            a TOC is generated</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="QandAtoc.html" +        >Q and A list of questions</link>, +      <link role="tcg" +        xlink:href="QandAformat.html" +        >Q and A formatting</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo_toc"> +  <xsl:param name="node" select="."/> +  <xsl:call-template name="dbfo-attribute"> +    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/> +    <xsl:with-param name="attribute" select="'toc'"/> +  </xsl:call-template> +</xsl:template> + +<doc:pi name="dbfo-need" xmlns=""> +  <refpurpose>Specify a need for space (a kind of soft page break)</refpurpose> +  <refdescription> +    <para>A “need†is a request for space on a page.  If the +      requested space is not available, the page breaks and the +      content that follows the need request appears on the next +      page. If the requested space is available, then no page break +      is inserted.</para> +  </refdescription> +  <refsynopsisdiv> +    <synopsis><tag class="xmlpi">dbfo-need height="<replaceable>n</replaceable>" [space-before="<replaceable>n</replaceable>"]</tag></synopsis> +  </refsynopsisdiv> +  <refparameter> +    <variablelist> +      <varlistentry><term>height="<replaceable>n</replaceable>"</term> +        <listitem> +          <para>The amount of height needed (including units)</para> +        </listitem> +      </varlistentry> +      <varlistentry><term>space-before="<replaceable>n</replaceable>"</term> +        <listitem> +          <para>The amount of extra vertical space to add (including units)</para> +        </listitem> +      </varlistentry> +    </variablelist> +  </refparameter> +  <refsee role="tcg"> +    <para><link role="tcg" +        xlink:href="PageBreaking.html#SoftPageBreaks" +        >Soft page breaks</link></para> +  </refsee> +</doc:pi> +<xsl:template name="pi.dbfo-need"> +  <xsl:variable name="pi-height"> +    <xsl:call-template name="dbfo-attribute"> +      <xsl:with-param name="pis" select="."/> +      <xsl:with-param name="attribute" select="'height'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="height"> +    <xsl:choose> +      <xsl:when test="$pi-height != ''"> +        <xsl:value-of select="$pi-height"/> +      </xsl:when> +      <xsl:otherwise>0pt</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="pi-before"> +    <xsl:call-template name="dbfo-attribute"> +      <xsl:with-param name="pis" select="."/> +      <xsl:with-param name="attribute" select="'space-before'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="spacer"> +    <fo:block-container width="100%" height="{$height}"> +      <fo:block><fo:leader leader-length="0pt"/></fo:block> +    </fo:block-container> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0"> +      <!-- Doesn't work in fop --> +    </xsl:when> +    <xsl:when test="$pi-before != '' and +      not(following-sibling::listitem) and +      not(following-sibling::step)"> +      <fo:block space-after="0pt" space-before="{$pi-before}"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="following-sibling::para"> +      <fo:block space-after="0pt"  +        xsl:use-attribute-sets="normal.para.spacing"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="following-sibling::table or +      following-sibling::figure or +      following-sibling::example or +      following-sibling::equation"> +      <fo:block space-after="0pt"  +        xsl:use-attribute-sets="formal.object.properties"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="following-sibling::informaltable or +      following-sibling::informalfigure or +      following-sibling::informalexample or +      following-sibling::informalequation"> +      <fo:block space-after="0pt"  +        xsl:use-attribute-sets="informal.object.properties"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="following-sibling::itemizedlist or +      following-sibling::orderedlist or +      following-sibling::variablelist or +      following-sibling::simplelist"> +      <fo:block space-after="0pt"  +        xsl:use-attribute-sets="informal.object.properties"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="following-sibling::listitem or +      following-sibling::step"> +      <fo:list-item space-after="0pt"  +        xsl:use-attribute-sets="informal.object.properties"> +        <fo:list-item-label/> +        <fo:list-item-body start-indent="0pt" end-indent="0pt"> +          <xsl:copy-of select="$spacer"/> +        </fo:list-item-body> +      </fo:list-item> +    </xsl:when> +    <xsl:when test="following-sibling::sect1 or +      following-sibling::sect2 or +      following-sibling::sect3 or +      following-sibling::sect4 or +      following-sibling::sect5 or +      following-sibling::section"> +      <fo:block space-after="0pt"  +        xsl:use-attribute-sets="section.title.properties"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block space-after="0pt" space-before="0em"> +        <xsl:copy-of select="$spacer"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="$fop.extensions != 0"> +      <!-- Doesn't work in fop --> +    </xsl:when> +    <xsl:when test="following-sibling::listitem or +      following-sibling::step"> +      <fo:list-item space-before.precedence="force" +        space-before="-{$height}" +        space-after="0pt" +        space-after.precedence="force"> +        <fo:list-item-label/> +        <fo:list-item-body start-indent="0pt" end-indent="0pt"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:block space-before.precedence="force" +        space-before="-{$height}" +        space-after="0pt" +        space-after.precedence="force"> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="dbfo-attribute"> +  <!-- * dbfo-attribute is an interal utility template for retrieving --> +  <!-- * pseudo-attributes/parameters from PIs --> +  <xsl:param name="pis" select="processing-instruction('dbfo')"/> +  <xsl:param name="attribute">filename</xsl:param> +  <xsl:call-template name="pi-attribute"> +    <xsl:with-param name="pis" select="$pis"/> +    <xsl:with-param name="attribute" select="$attribute"/> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="processing-instruction()"> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="processing-instruction('dbfo-need')"> +  <xsl:call-template name="pi.dbfo-need"/> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/profile-docbook.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/profile-docbook.xsl new file mode 100644 index 0000000..c35ae05 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/profile-docbook.xsl @@ -0,0 +1,284 @@ +<?xml version="1.0" encoding="US-ASCII"?> +<!--This file was created automatically by xsl2profile--> +<!--from the DocBook XSL stylesheets.--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="db ng exsl exslt" version="1.0"> + +<!-- It is important to use indent="no" here, otherwise verbatim --> +<!-- environments get broken by indented tags...at least when the --> +<!-- callout extension is used...at least with some processors --> +<xsl:output method="xml" indent="no"/> + +<!-- ******************************************************************** +     $Id: profile-docbook.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:include href="../VERSION"/> +<xsl:include href="param.xsl"/> +<xsl:include href="../lib/lib.xsl"/> +<xsl:include href="../common/l10n.xsl"/> +<xsl:include href="../common/common.xsl"/> +<xsl:include href="../common/utility.xsl"/> +<xsl:include href="../common/labels.xsl"/> +<xsl:include href="../common/titles.xsl"/> +<xsl:include href="../common/subtitles.xsl"/> +<xsl:include href="../common/gentext.xsl"/> +<xsl:include href="../common/olink.xsl"/> +<xsl:include href="../common/targets.xsl"/> +<xsl:include href="../common/pi.xsl"/> +<xsl:include href="autotoc.xsl"/> +<xsl:include href="autoidx.xsl"/> +<xsl:include href="lists.xsl"/> +<xsl:include href="callout.xsl"/> +<xsl:include href="verbatim.xsl"/> +<xsl:include href="graphics.xsl"/> +<xsl:include href="xref.xsl"/> +<xsl:include href="formal.xsl"/> +<xsl:include href="table.xsl"/> +<xsl:include href="htmltbl.xsl"/> +<xsl:include href="sections.xsl"/> +<xsl:include href="inline.xsl"/> +<xsl:include href="footnote.xsl"/> +<xsl:include href="fo.xsl"/> +<xsl:include href="fo-rtf.xsl"/> +<xsl:include href="info.xsl"/> +<xsl:include href="keywords.xsl"/> +<xsl:include href="division.xsl"/> +<xsl:include href="index.xsl"/> +<xsl:include href="toc.xsl"/> +<xsl:include href="refentry.xsl"/> +<xsl:include href="math.xsl"/> +<xsl:include href="admon.xsl"/> +<xsl:include href="component.xsl"/> +<xsl:include href="biblio.xsl"/> +<xsl:include href="biblio-iso690.xsl"/> +<xsl:include href="glossary.xsl"/> +<xsl:include href="block.xsl"/> +<xsl:include href="task.xsl"/> +<xsl:include href="qandaset.xsl"/> +<xsl:include href="synop.xsl"/> +<xsl:include href="titlepage.xsl"/> +<xsl:include href="titlepage.templates.xsl"/> +<xsl:include href="pagesetup.xsl"/> +<xsl:include href="pi.xsl"/> +<xsl:include href="spaces.xsl"/> +<xsl:include href="ebnf.xsl"/> +<xsl:include href="../html/chunker.xsl"/> +<xsl:include href="annotations.xsl"/> +<xsl:include href="../common/stripns.xsl"/> + +<xsl:include href="fop.xsl"/> +<xsl:include href="fop1.xsl"/> +<xsl:include href="passivetex.xsl"/> +<xsl:include href="xep.xsl"/> +<xsl:include href="axf.xsl"/> +<xsl:include href="ptc.xsl"/> + +<xsl:param name="stylesheet.result.type" select="'fo'"/> + +<!-- ==================================================================== --> + +<xsl:key name="id" match="*" use="@id|@xml:id"/> + +<!-- ==================================================================== --> + +<xsl:template match="*"> +  <xsl:message> +    <xsl:value-of select="name(.)"/> +    <xsl:text> encountered</xsl:text> +    <xsl:if test="parent::*"> +      <xsl:text> in </xsl:text> +      <xsl:value-of select="name(parent::*)"/> +    </xsl:if> +    <xsl:text>, but no template matches.</xsl:text> +  </xsl:message> +  <fo:block color="red"> +    <xsl:text><</xsl:text> +    <xsl:value-of select="name(.)"/> +    <xsl:text>></xsl:text> +    <xsl:apply-templates/>  +    <xsl:text></</xsl:text> +    <xsl:value-of select="name(.)"/> +    <xsl:text>></xsl:text> +  </fo:block> +</xsl:template> + +<!-- Update this list if new root elements supported --> +<xsl:variable name="root.elements" select="' appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex '"/> + +<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/"> +  <!-- * Get a title for current doc so that we let the user --> +  <!-- * know what document we are processing at this point. --> +  <xsl:variable name="doc.title"> +    <xsl:call-template name="get.doc.title"/> +  </xsl:variable> +  <xsl:choose> +    <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document, +         toss the namespace and continue.  Use the docbook5 namespaced +         stylesheets for DocBook5 if you don't want to use this feature.--> +    <!-- 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:variable name="root.element" select="key('id', $rootid)"/> +          <xsl:choose> +            <xsl:when test="count($root.element) = 0"> +              <xsl:message terminate="yes"> +                <xsl:text>ID '</xsl:text> +                <xsl:value-of select="$rootid"/> +                <xsl:text>' not found in document.</xsl:text> +              </xsl:message> +            </xsl:when> +            <xsl:when test="not(contains($root.elements, concat(' ', local-name($root.element), ' ')))"> +              <xsl:message terminate="yes"> +                <xsl:text>ERROR: Document root element ($rootid=</xsl:text> +                <xsl:value-of select="$rootid"/> +                <xsl:text>) for FO output </xsl:text> +                <xsl:text>must be one of the following elements:</xsl:text> +                <xsl:value-of select="$root.elements"/> +              </xsl:message> +            </xsl:when> +            <!-- Otherwise proceed --> +            <xsl:otherwise> +              <xsl:if test="$collect.xref.targets = 'yes' or                             $collect.xref.targets = 'only'"> +                <xsl:apply-templates select="$root.element" mode="collect.targets"/> +              </xsl:if> +              <xsl:if test="$collect.xref.targets != 'only'"> +                <xsl:apply-templates select="$root.element" mode="process.root"/> +              </xsl:if> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <!-- Otherwise process the document root element --> +        <xsl:otherwise> +          <xsl:variable name="document.element" select="*[1]"/> +          <xsl:choose> +            <xsl:when test="not(contains($root.elements,                      concat(' ', local-name($document.element), ' ')))"> +              <xsl:message terminate="yes"> +                <xsl:text>ERROR: Document root element for FO output </xsl:text> +                <xsl:text>must be one of the following elements:</xsl:text> +                <xsl:value-of select="$root.elements"/> +              </xsl:message> +            </xsl:when> +            <!-- Otherwise proceed --> +            <xsl:otherwise> +              <xsl:if test="$collect.xref.targets = 'yes' or                             $collect.xref.targets = 'only'"> +                <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/> +              </xsl:if> +              <xsl:if test="$collect.xref.targets != 'only'"> +                <xsl:apply-templates select="$profiled-nodes" mode="process.root"/> +              </xsl:if> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="process.root"> +  <xsl:variable name="document.element" select="self::*"/> + +  <xsl:call-template name="root.messages"/> + +  <xsl:variable name="title"> +    <xsl:choose> +      <xsl:when test="$document.element/title[1]"> +        <xsl:value-of select="$document.element/title[1]"/> +      </xsl:when> +      <xsl:otherwise>[could not find document title]</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +   +  <!-- Include all id values in XEP output --> +  <xsl:if test="$xep.extensions != 0"> +    <xsl:processing-instruction name="xep-pdf-drop-unused-destinations">false</xsl:processing-instruction> +  </xsl:if> + +  <fo:root xsl:use-attribute-sets="root.properties"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"> +        <xsl:with-param name="target" select="/*[1]"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:if test="$xep.extensions != 0"> +      <xsl:call-template name="xep-pis"/> +      <xsl:call-template name="xep-document-information"/> +    </xsl:if> +    <xsl:if test="$axf.extensions != 0"> +      <xsl:call-template name="axf-document-information"/> +    </xsl:if> + +    <xsl:call-template name="setup.pagemasters"/> + +    <xsl:if test="$fop.extensions != 0"> +      <xsl:apply-templates select="$document.element" mode="fop.outline"/> +    </xsl:if> + +    <xsl:if test="$fop1.extensions != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element" mode="fop1.outline"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <fo:bookmark-tree> +          <xsl:copy-of select="$bookmarks"/> +        </fo:bookmark-tree> +      </xsl:if> +    </xsl:if> + +    <xsl:if test="$xep.extensions != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element" mode="xep.outline"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <rx:outline xmlns:rx="http://www.renderx.com/XSL/Extensions"> +          <xsl:copy-of select="$bookmarks"/> +        </rx:outline> +      </xsl:if> +    </xsl:if> + +    <xsl:if test="$arbortext.extensions != 0 and $ati.xsl11.bookmarks != 0"> +      <xsl:variable name="bookmarks"> +        <xsl:apply-templates select="$document.element" mode="ati.xsl11.bookmarks"/> +      </xsl:variable> +      <xsl:if test="string($bookmarks) != ''"> +        <fo:bookmark-tree> +          <xsl:copy-of select="$bookmarks"/> +        </fo:bookmark-tree> +      </xsl:if> +    </xsl:if> + +    <xsl:apply-templates select="$document.element"/> +  </fo:root> +</xsl:template> + +<xsl:template name="root.messages"> +  <!-- redefine this any way you'd like to output messages --> +  <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE --> +  <xsl:message> +    <xsl:text>Making </xsl:text> +    <xsl:value-of select="$page.orientation"/> +    <xsl:text> pages on </xsl:text> +    <xsl:value-of select="$paper.type"/> +    <xsl:text> paper (</xsl:text> +    <xsl:value-of select="$page.width"/> +    <xsl:text>x</xsl:text> +    <xsl:value-of select="$page.height"/> +    <xsl:text>)</xsl:text> +  </xsl:message> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/ptc.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/ptc.xsl new file mode 100644 index 0000000..f3e25e3 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/ptc.xsl @@ -0,0 +1,76 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +		xmlns:fo="http://www.w3.org/1999/XSL/Format" +		version="1.0"> + +<!-- ================================================================ --> +<!--                                                                  --> +<!-- PTC/Arbortext Code for XSL 1.1 bookmark support                  --> +<!--                                                                  --> +<!-- ================================================================ --> + +<xsl:param name="ati.xsl11.bookmarks" select="1"/> + +<xsl:variable name="ati-a-dia" select= +"'āăąćĉċčďđēĕėęěœĝğġģĥħĩīĭįıĵķĺļľŀłńņňŋōŏőŕŗřśŝşšţťŧũūŭůűųŵŷźżžĀĂĄĆĈĊČĎĐĒĔĖĘĚŒĜĞĠĢĤĦĨĪĬĮİĴĶĹĻĽĿŁŃŅŇŊŌŎŐŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽ'"/> + +<xsl:variable name="ati-a-asc" select= +"'aaaccccddeeeeeegggghhiiiiijklllllnnnnooorrrsssstttuuuuuuwyzzzAAACCCCDDEEEEEEGGGGHHIIIIIJKLLLLLNNNNOOORRRSSSSTTTUUUUUUWYYZZZ'"/> + +<xsl:template match="*" mode="ati.xsl11.bookmarks"> +  <xsl:apply-templates select="*" mode="ati.xsl11.bookmarks"/> +</xsl:template> + +<xsl:template match="set|book|part|reference|preface|chapter|appendix|article +                     |glossary|bibliography|index|setindex +                     |refentry +                     |sect1|sect2|sect3|sect4|sect5|section" +              mode="ati.xsl11.bookmarks"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="bookmark-label"> +    <xsl:apply-templates select="." mode="object.title.markup"/> +  </xsl:variable> + +  <!-- Put the root element bookmark at the same level as its children --> +  <!-- If the object is a set or book, generate a bookmark for the toc --> + +  <xsl:choose> +    <xsl:when test="parent::*"> +      <fo:bookmark internal-destination="{$id}"> +        <fo:bookmark-title> +          <xsl:value-of select="translate($bookmark-label, $ati-a-dia, $ati-a-asc)"/> +        </fo:bookmark-title> +        <xsl:apply-templates select="*" mode="ati.xsl11.bookmarks"/> +      </fo:bookmark> +    </xsl:when> +    <xsl:otherwise> +      <fo:bookmark internal-destination="{$id}"> +        <fo:bookmark-title> +          <xsl:value-of select="translate($bookmark-label, $ati-a-dia, $ati-a-asc)"/> +        </fo:bookmark-title> +      </fo:bookmark> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:if test="contains($toc.params, 'toc') +                    and section|sect1|refentry +                        |article|bibliography|glossary +                        |appendix"> +        <fo:bookmark internal-destination="toc...{$id}"> +          <fo:bookmark-title> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'TableofContents'"/> +            </xsl:call-template> +          </fo:bookmark-title> +        </fo:bookmark> +      </xsl:if> +      <xsl:apply-templates select="*" mode="ati.xsl11.bookmarks"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/qandaset.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/qandaset.xsl new file mode 100644 index 0000000..d44dde9 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/qandaset.xsl @@ -0,0 +1,393 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: qandaset.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="qandaset" name="process.qandaset"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="label-width"> +    <xsl:call-template name="pi.dbfo_label-width"/> +  </xsl:variable> + +  <xsl:variable name="label-length"> +    <xsl:choose> +      <xsl:when test="$label-width != ''"> +        <xsl:value-of select="$label-width"/> +      </xsl:when> +      <xsl:when test="descendant::label"> +        <xsl:call-template name="longest.term"> +          <xsl:with-param name="terms" select="descendant::label"/> +          <xsl:with-param name="maxlength" select="20"/> +        </xsl:call-template> +        <xsl:text>em * 0.50</xsl:text> +      </xsl:when> +      <xsl:otherwise>2.5em</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +   +  <xsl:variable name="toc"> +    <xsl:call-template name="pi.dbfo_toc"/> +  </xsl:variable> + +  <xsl:variable name="toc.params"> +    <xsl:call-template name="find.path.params"> +      <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="content"> +    <fo:block id="{$id}"> +      <xsl:choose> +        <xsl:when test="parent::*"> +          <xsl:if test="blockinfo/title|info/title|title"> +            <xsl:apply-templates select="(blockinfo/title| +                                          info/title|title)[1]"/> +          </xsl:if> +        </xsl:when> +        <!-- If it is the root element --> +        <xsl:otherwise> +          <xsl:call-template name="qandaset.titlepage"/> +        </xsl:otherwise> +      </xsl:choose> +   +      <xsl:if test="(contains($toc.params, 'toc') and $toc != '0')  +                    or $toc = '1'"> +        <xsl:call-template name="qandaset.toc"> +          <xsl:with-param name="toc.title.p" +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +      </xsl:if> + +      <xsl:call-template name="qandaset.toc.separator"/> + +      <xsl:apply-templates select="*[local-name(.) != 'title' +                                   and local-name(.) != 'titleabbrev' +                                   and local-name(.) != 'qandadiv' +                                   and local-name(.) != 'qandaentry']"/> +      <xsl:apply-templates select="qandadiv"/> +   +      <xsl:if test="qandaentry"> +        <fo:list-block xsl:use-attribute-sets="list.block.spacing" +                       provisional-label-separation="0.2em"> +          <xsl:attribute name="provisional-distance-between-starts"> +            <xsl:choose> +              <xsl:when test="$label-length != ''"> +                <xsl:value-of select="$label-length"/> +              </xsl:when> +              <xsl:otherwise>2.5em</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +          <xsl:apply-templates select="qandaentry"/> +        </fo:list-block> +      </xsl:if> +    </fo:block> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*"> +      <xsl:copy-of select="$content"/> +    </xsl:when> +    <!-- Otherwise create a page sequence --> +    <xsl:otherwise> +      <xsl:apply-templates select="." mode="page.sequence"> +        <xsl:with-param name="content" select="$content"/> +        <xsl:with-param name="master-reference" select="'body'"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +   +</xsl:template> + +<xsl:template match="qandaset/blockinfo/title|qandset/info/title|qandaset/title"> +  <xsl:variable name="enclsect" select="(ancestor::section +                                        | ancestor::simplesect +                                        | ancestor::sect5 +                                        | ancestor::sect4 +                                        | ancestor::sect3 +                                        | ancestor::sect2 +                                        | ancestor::sect1 +                                        | ancestor::refsect3 +                                        | ancestor::refsect2 +                                        | ancestor::refsect1)[last()]"/> +  <xsl:variable name="sectlvl"> +    <xsl:call-template name="section.level"> +      <xsl:with-param name="node" select="$enclsect"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="qanda.heading"> +    <xsl:with-param name="level" select="$sectlvl + 1"/> +    <xsl:with-param name="marker" select="0"/> +    <xsl:with-param name="title"> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="qandaset/blockinfo|qandaset/info"> +  <!-- what should this template really do? --> +  <xsl:apply-templates select="legalnotice" mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="qandadiv"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="label-width"> +    <xsl:call-template name="pi.dbfo_label-width"/> +  </xsl:variable> + +  <xsl:variable name="label-length"> +    <xsl:choose> +      <xsl:when test="$label-width != ''"> +        <xsl:value-of select="$label-width"/> +      </xsl:when> +      <xsl:when test="descendant::label"> +        <xsl:call-template name="longest.term"> +          <xsl:with-param name="terms" select="descendant::label"/> +          <xsl:with-param name="maxlength" select="20"/> +        </xsl:call-template> +        <xsl:text>*0.6em</xsl:text> +      </xsl:when> +      <xsl:otherwise>2.5em</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:apply-templates select="(blockinfo/title|info/title|title)[1]"/> +    <xsl:apply-templates select="*[local-name(.) != 'title' +                                 and local-name(.) != 'titleabbrev' +                                 and local-name(.) != 'qandadiv' +                                 and local-name(.) != 'qandaentry']"/> +    <fo:block> +      <xsl:apply-templates select="qandadiv"/> + +      <xsl:if test="qandaentry"> +        <fo:list-block xsl:use-attribute-sets="list.block.spacing" +                       provisional-label-separation="0.2em"> +          <xsl:attribute name="provisional-distance-between-starts"> +            <xsl:choose> +              <xsl:when test="$label-length != ''"> +                <xsl:value-of select="$label-length"/> +              </xsl:when> +              <xsl:otherwise>2.5em</xsl:otherwise> +            </xsl:choose> +          </xsl:attribute> +          <xsl:apply-templates select="qandaentry"/> +        </fo:list-block> +      </xsl:if> +    </fo:block> +  </fo:block> +</xsl:template> + +<xsl:template match="qandadiv/blockinfo/title|qandadiv/info/title|qandadiv/title"> +  <xsl:variable name="enclsect" select="(ancestor::section +                                        | ancestor::simplesect +                                        | ancestor::sect5 +                                        | ancestor::sect4 +                                        | ancestor::sect3 +                                        | ancestor::sect2 +                                        | ancestor::sect1 +                                        | ancestor::refsect3 +                                        | ancestor::refsect2 +                                        | ancestor::refsect1)[last()]"/> +  <xsl:variable name="sectlvl"> +    <xsl:call-template name="section.level"> +      <xsl:with-param name="node" select="$enclsect"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:call-template name="qanda.heading"> +    <xsl:with-param name="level"  select="$sectlvl + 1 + count(ancestor::qandadiv)"/> +    <xsl:with-param name="marker" select="0"/> +    <xsl:with-param name="title"> +      <xsl:apply-templates select="parent::qandadiv" mode="label.markup"/> +      <xsl:if test="$qandadiv.autolabel != 0"> +        <xsl:apply-templates select="." mode="intralabel.punctuation"/> +        <xsl:text> </xsl:text> +      </xsl:if> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="qandaentry"> +  <!-- Omit revhistory from fo:list-block because it is a table --> +  <xsl:apply-templates select="question|answer"/> +</xsl:template> + +<xsl:template match="question"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="entry.id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="parent::*"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="deflabel"> +    <xsl: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.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> + +  <fo:list-item id="{$entry.id}" xsl:use-attribute-sets="list.item.spacing"> +    <fo:list-item-label id="{$id}" end-indent="label-end()"> +        <xsl:if test="string-length($label.content) > 0"> +			<fo:block font-weight="bold"> +			  <xsl:copy-of select="$label.content"/>           +			</fo:block> +        </xsl:if> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <xsl:choose> +        <xsl:when test="$deflabel = 'none' and not(label)"> +          <fo:block font-weight="bold"> +            <xsl:apply-templates select="*[local-name(.)!='label']"/> +          </fo:block> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="*[local-name(.)!='label']"/> +        </xsl:otherwise> +      </xsl:choose> +      <!-- Uncomment this line to get revhistory output in the question --> +      <!-- <xsl:apply-templates select="preceding-sibling::revhistory"/> --> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="answer"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> +  <xsl:variable name="entry.id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="parent::*"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="deflabel"> +    <xsl: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="answer.label"> +        <xsl:apply-templates select="." mode="label.markup"/> +      </xsl:variable> + +  <fo:list-item xsl:use-attribute-sets="list.item.spacing"> +    <fo:list-item-label id="{$id}" end-indent="label-end()"> +      <xsl:choose> +        <xsl:when test="string-length($answer.label) > 0"> +			<fo:block font-weight="bold"> +			  <xsl:copy-of select="$answer.label"/> +			</fo:block> +        </xsl:when> +        <xsl:otherwise> +			<fo:block/> +        </xsl:otherwise> +      </xsl:choose> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <xsl:apply-templates select="*[local-name(.)!='label' and local-name(.) != 'qandaentry']"/> +      <!-- * handle nested answer/qandaentry instances --> +      <!-- * (bug 1509043 from Daniel Leidert) --> +      <xsl:if test="descendant::question"> +        <xsl:call-template name="process.qandaset"/> +      </xsl:if> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="label"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template name="qanda.heading"> +  <xsl:param name="level" select="1"/> +  <xsl:param name="marker" select="0"/> +  <xsl:param name="title"/> +  <xsl:param name="titleabbrev"/> + +  <fo:block xsl:use-attribute-sets="qanda.title.properties"> +    <xsl:if test="$marker != 0"> +      <fo:marker marker-class-name="section.head.marker"> +        <xsl:choose> +          <xsl:when test="$titleabbrev = ''"> +            <xsl:value-of select="$title"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$titleabbrev"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:marker> +    </xsl:if> +    <xsl:choose> +      <xsl:when test="$level=1"> +        <fo:block xsl:use-attribute-sets="qanda.title.level1.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=2"> +        <fo:block xsl:use-attribute-sets="qanda.title.level2.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=3"> +        <fo:block xsl:use-attribute-sets="qanda.title.level3.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=4"> +        <fo:block xsl:use-attribute-sets="qanda.title.level4.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=5"> +        <fo:block xsl:use-attribute-sets="qanda.title.level5.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <fo:block xsl:use-attribute-sets="qanda.title.level6.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/refentry.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/refentry.xsl new file mode 100644 index 0000000..e052d93 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/refentry.xsl @@ -0,0 +1,637 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: refentry.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="reference"> +   <xsl:if test="not(partintro)"> +    <xsl:variable name="id"> +      <xsl:call-template name="object.id"/> +    </xsl:variable> +    <xsl:variable name="master-reference"> +      <xsl:call-template name="select.pagemaster"/> +    </xsl:variable> + +    <fo:page-sequence hyphenate="{$hyphenate}" +                      master-reference="{$master-reference}"> +      <xsl:attribute name="language"> +        <xsl:call-template name="l10n.language"/> +      </xsl:attribute> +      <xsl:attribute name="format"> +        <xsl:call-template name="page.number.format"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="initial-page-number"> +        <xsl:call-template name="initial.page.number"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="force-page-count"> +        <xsl:call-template name="force.page.count"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:attribute name="hyphenation-character"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-character'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-push-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> +      <xsl:attribute name="hyphenation-remain-character-count"> +        <xsl:call-template name="gentext"> +          <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +        </xsl:call-template> +      </xsl:attribute> + +      <xsl:apply-templates select="." mode="running.head.mode"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:apply-templates> +      <xsl:apply-templates select="." mode="running.foot.mode"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:apply-templates> + +      <fo:flow flow-name="xsl-region-body"> +        <xsl:call-template name="set.flow.properties"> +          <xsl:with-param name="element" select="local-name(.)"/> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:call-template> + +        <fo:block id="{$id}"> +          <xsl:call-template name="reference.titlepage"/> +        </fo:block> +        <!-- Create one page sequence if no pagebreaks needed --> +        <xsl:if test="$refentry.pagebreak = 0"> +          <xsl:apply-templates select="refentry"/> +        </xsl:if> +      </fo:flow> +    </fo:page-sequence> +  </xsl:if> +  <xsl:apply-templates select="partintro"/> +  <xsl:if test="$refentry.pagebreak != 0"> +    <xsl:apply-templates select="refentry"/> +  </xsl:if> +</xsl:template> + +<xsl:template match="reference" mode="reference.titlepage.mode"> +  <xsl:call-template name="reference.titlepage"/> +</xsl:template> + +<xsl:template match="reference/partintro"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"> +      <xsl:with-param name="object" select="ancestor::reference"/> +    </xsl:call-template> +  </xsl:variable> +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +      <fo:block id="{$id}"> +        <xsl:apply-templates select=".." mode="reference.titlepage.mode"/> +      </fo:block> +      <xsl:if test="title"> +        <xsl:call-template name="partintro.titlepage"/> +      </xsl:if> +      <xsl:apply-templates/> +      <!-- Create one page sequence if no pagebreaks needed --> +      <xsl:if test="$refentry.pagebreak = 0"> +        <xsl:apply-templates select="../refentry"/> +      </xsl:if> +    </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="reference/docinfo|refentry/refentryinfo"></xsl:template> +<xsl:template match="reference/info"></xsl:template> +<xsl:template match="reference/title"></xsl:template> +<xsl:template match="reference/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="refentry"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <xsl:variable name="refentry.content"> +    <fo:block id="{$id}"> +      <xsl:apply-templates/> +    </fo:block> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="not(parent::*) or  +                    (parent::reference and $refentry.pagebreak != 0) or  +                    parent::part"> +      <!-- make a page sequence --> +      <fo:page-sequence hyphenate="{$hyphenate}" +                        master-reference="{$master-reference}"> +        <xsl:attribute name="language"> +          <xsl:call-template name="l10n.language"/> +        </xsl:attribute> +        <xsl:attribute name="format"> +          <xsl:call-template name="page.number.format"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> + +        <xsl:attribute name="initial-page-number"> +          <xsl:call-template name="initial.page.number"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> + +        <xsl:attribute name="force-page-count"> +          <xsl:call-template name="force.page.count"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> +        </xsl:attribute> + +        <xsl:attribute name="hyphenation-character"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-character'"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="hyphenation-push-character-count"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +          </xsl:call-template> +        </xsl:attribute> +        <xsl:attribute name="hyphenation-remain-character-count"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +          </xsl:call-template> +        </xsl:attribute> + +        <xsl:apply-templates select="." mode="running.head.mode"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:apply-templates> +        <xsl:apply-templates select="." mode="running.foot.mode"> +          <xsl:with-param name="master-reference" select="$master-reference"/> +        </xsl:apply-templates> + +        <fo:flow flow-name="xsl-region-body"> +          <xsl:call-template name="set.flow.properties"> +            <xsl:with-param name="element" select="local-name(.)"/> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:call-template> + +          <xsl:copy-of select="$refentry.content"/> +        </fo:flow> +      </fo:page-sequence> +    </xsl:when> +    <xsl:otherwise> +      <fo:block> +        <xsl:if test="$refentry.pagebreak != 0"> +          <xsl:attribute name="break-before">page</xsl:attribute> +        </xsl:if> +        <xsl:copy-of select="$refentry.content"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="refmeta"> +</xsl:template> + +<xsl:template match="manvolnum"> +  <xsl:if test="$refentry.xref.manvolnum != 0"> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates/> +    <xsl:text>)</xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="refmiscinfo"> +</xsl:template> + +<xsl:template match="refentrytitle"> +  <xsl:call-template name="inline.charseq"/> +</xsl:template> + +<xsl:template match="refnamediv"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> + +    <!-- if refentry.generate.name is non-zero, then we need to generate a --> +    <!-- localized "Name" subheading for this refnamdiv (unless it has a --> +    <!-- preceding sibling that is a refnamediv, in which case we have already --> +    <!-- generated a "Name" subheading, so we don't need to do it again --> +    <xsl:if test="$refentry.generate.name != 0"> +        <xsl:choose> +          <xsl:when test="preceding-sibling::refnamediv"> +            <!-- no generated title on secondary refnamedivs! --> +          </xsl:when> +          <xsl:otherwise> +            <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" +                      xsl:use-attribute-sets="refnamediv.titlepage.recto.style" +                      font-family="{$title.fontset}"> +              <!-- Contents of what is now the format.refentry.subheading --> +              <!-- template were formerly intended to be used only to --> +              <!-- process those subsections of Refentry that have "real" --> +              <!-- title children. So as a kludge to get around the fact --> +              <!-- that the template still basically "expects" to be --> +              <!-- processing that kind of a node, when we call the --> +              <!-- template to process generated titles, we must call it --> +              <!-- with values for the "offset" and "section" parameters --> +              <!-- that are different from the default values in the --> +              <!-- format.refentry.subheading template itself. Because --> +              <!-- those defaults are the values appropriate for processing --> +              <!-- "real" title nodes. --> +              <xsl:call-template name="format.refentry.subheading"> +                <xsl:with-param name="section" select="self::*"/> +                <xsl:with-param name="offset" select="1"/> +                <xsl:with-param name="gentext.key" select="'RefName'"/> +              </xsl:call-template> +            </fo:block> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:if> + +      <xsl:if test="$refentry.generate.title != 0"> +  <xsl:variable name="section.level"> +    <xsl:call-template name="refentry.level"> +      <xsl:with-param name="node" select="ancestor::refentry"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="reftitle"> +        <xsl:choose> +          <xsl:when test="../refmeta/refentrytitle"> +            <xsl:apply-templates select="../refmeta/refentrytitle"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="refname[1]"/> +          </xsl:otherwise> +        </xsl:choose> +  </xsl:variable> + +  <!-- xsl:use-attribute-sets takes only a Qname, not a variable --> +    <xsl:choose> +      <xsl:when test="preceding-sibling::refnamediv"> +	<!-- no title on secondary refnamedivs! --> +      </xsl:when> +      <xsl:when test="$section.level = 1"> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level1.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:when> +      <xsl:when test="$section.level = 2"> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level2.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:when> +      <xsl:when test="$section.level = 3"> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level3.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:when> +      <xsl:when test="$section.level = 4"> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level4.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:when> +      <xsl:when test="$section.level = 5"> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level5.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <fo:block xsl:use-attribute-sets="refentry.title.properties"> +          <fo:block xsl:use-attribute-sets="section.title.level6.properties"> +            <xsl:value-of select="$reftitle"/> +          </fo:block> +        </fo:block> +      </xsl:otherwise> +    </xsl:choose> +    </xsl:if> + +    <fo:block> +      <xsl:if test="not(following-sibling::refnamediv)"> +	<xsl:attribute name="space-after">1em</xsl:attribute> +      </xsl:if> +      <xsl:apply-templates/> +    </fo:block> +  </fo:block> +</xsl:template> + +<xsl:template match="refname"> +  <xsl:if test="not(preceding-sibling::refdescriptor)"> +    <xsl:apply-templates/> +    <xsl:if test="following-sibling::refname"> +      <xsl:text>, </xsl:text> +    </xsl:if> +  </xsl:if> +</xsl:template> + +<xsl:template match="refpurpose"> +  <xsl:if test="node()"> +    <xsl:text> </xsl:text> +    <xsl:call-template name="dingbat"> +      <xsl:with-param name="dingbat">em-dash</xsl:with-param> +    </xsl:call-template> +    <xsl:text> </xsl:text> +    <xsl:apply-templates/> +  </xsl:if> +</xsl:template> + +<xsl:template match="refdescriptor"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="refclass"> +  <xsl:if test="$refclass.suppress = 0"> +  <fo:block font-weight="bold"> +    <xsl:if test="@role"> +      <xsl:value-of select="@role"/> +      <xsl:text>: </xsl:text> +    </xsl:if> +    <xsl:apply-templates/> +  </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="refsynopsisdiv"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:if test="not(refsynopsisdivinfo/title|docinfo/title|info/title|title)"> +      <!-- * if we there is no appropriate title for this Refsynopsisdiv, --> +      <!-- * then we need to call format.refentry.subheading to generate one --> +      <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" +                font-family="{$title.fontset}"> +        <!-- Contents of what is now the format.refentry.subheading --> +        <!-- template were formerly intended to be used only to --> +        <!-- process those subsections of Refentry that have "real" --> +        <!-- title children. So as a kludge to get around the fact --> +        <!-- that the template still basically "expects" to be --> +        <!-- processing that kind of a node, when we call the --> +        <!-- template to process generated titles, we must call it --> +        <!-- with values for the "offset" and "section" parameters --> +        <!-- that are different from the default values in the --> +        <!-- format.refentry.subheading template itself. Because --> +        <!-- those defaults are the values appropriate for processing --> +        <!-- "real" title nodes. --> +        <xsl:call-template name="format.refentry.subheading"> +          <xsl:with-param name="section" select="parent::*"/> +          <xsl:with-param name="offset" select="1"/> +          <xsl:with-param name="gentext.key" select="'RefSynopsisDiv'"/> +        </xsl:call-template> +      </fo:block> +    </xsl:if> +    <xsl:call-template name="refsynopsisdiv.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="refsection"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="refsection.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="refsect1"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="refsect1.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="refsect2"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="refsect2.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="refsect3"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="refsect3.titlepage"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="refsynopsisdiv/title +                     |refsection/title +                     |refsect1/title +                     |refsect2/title +                     |refsect3/title"> +  <!-- nop; titlepage.mode instead --> +</xsl:template> + +<xsl:template match="refsynopsisdiv/title +                     |refsection/title +                     |refsect1/title +                     |refsect2/title +                     |refsect3/title +                     |refsynopsisdiv/info/title +                     |refsection/info/title +                     |refsect1/info/title +                     |refsect2/info/title +                     |refsect3/info/title" +              mode="titlepage.mode" +              priority="2"> +  <xsl:call-template name="format.refentry.subheading"/> +</xsl:template> + +<xsl:template name="format.refentry.subheading"> +<!-- This template is now called to process generated titles for --> +<!-- Refnamediv and Refsynopsisdiv, as well as "real" titles for --> +<!-- Refsynopsisdiv, Refsection, and Refsect[1-3]. --> +<!-- --> +<!-- But the contents of this template were formerly intended to be used --> +<!-- only to process those subsections of Refentry that have "real" title --> +<!-- children. So as a kludge to get around the fact that the template --> +<!-- still basically "expects" to be processing that kind of a node, the --> +<!-- "offset" parameter was added and the "section" variable was changed to --> +<!-- a parameter so that when called for a generated title on a Refnamediv --> +<!-- or Refsynopsisdiv, we can call it like this: --> +<!-- --> +<!--     <xsl:call-template name="format.refentry.subheading"> --> +<!--       <xsl:with-param name="section" select="self::*"/> --> +<!--       <xsl:with-param name="offset" select="1"/> --> +<!--       <xsl:with-param name="gentext.key" select="'RefName'"/> --> +<!--     </xsl:call-template> --> +<!-- --> +  <xsl:param name="section"  +             select="(ancestor::refsynopsysdiv  +                     |ancestor::refsection +                     |ancestor::refsect1 +                     |ancestor::refsect2 +                     |ancestor::refsect3)[last()]"/> +  <xsl:param name="offset" select="0"/> +  <xsl:param name="gentext.key"/> + +  <fo:block keep-with-next.within-column="always"> +    <xsl:variable name="id"> +      <xsl:call-template name="object.id"> +        <xsl:with-param name="object" select="$section"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:variable name="level"> +      <xsl:call-template name="section.level"> +        <xsl:with-param name="node" select="$section"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:variable name="title"> +      <!-- If we have a non-empty value for the $gentext.key param, then we --> +      <!-- generate an appropriate title here. Otherwise, we have a real --> +      <!-- title child, so we copy contents of that to the result tree. --> +      <xsl:choose> +        <xsl:when test="$gentext.key != ''"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="$gentext.key"/> +          </xsl:call-template> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="$section" mode="object.title.markup"> +            <xsl:with-param name="allow-anchors" select="1"/> +          </xsl:apply-templates> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:variable> + +    <xsl:if test="$passivetex.extensions != 0"> +      <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"  +                      fotex-bookmark-level="{$level + 2 + $offset}"  +                      fotex-bookmark-label="{$id}"> +        <xsl:value-of select="$title"/> +      </fotex:bookmark> +    </xsl:if> + +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:outline-level"> +        <xsl:value-of select="count(ancestor::*)-1 + $offset"/> +      </xsl:attribute> +      <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +      <xsl:attribute name="axf:outline-title"> +        <xsl:value-of select="$title"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:call-template name="section.heading"> +      <xsl:with-param name="level" select="$level + $offset"/> +      <xsl:with-param name="title" select="$title"/> +    </xsl:call-template> +  </fo:block> +</xsl:template> + +<xsl:template match="refsectioninfo|refsection/info"></xsl:template> +<xsl:template match="refsect1info|refsect1/info"></xsl:template> +<xsl:template match="refsect2info|refsect2/info"></xsl:template> +<xsl:template match="refsect3info|refsect3/info"></xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sections.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sections.xsl new file mode 100644 index 0000000..d746132 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sections.xsl @@ -0,0 +1,764 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: sections.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="section"> +  <xsl:choose> +    <xsl:when test="$rootid = @id or $rootid = @xml:id"> +      <xsl:call-template name="section.page.sequence"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="id"> +        <xsl:call-template name="object.id"/> +      </xsl:variable> + +      <xsl:variable name="renderas"> +        <xsl:choose> +          <xsl:when test="@renderas = 'sect1'">1</xsl:when> +          <xsl:when test="@renderas = 'sect2'">2</xsl:when> +          <xsl:when test="@renderas = 'sect3'">3</xsl:when> +          <xsl:when test="@renderas = 'sect4'">4</xsl:when> +          <xsl:when test="@renderas = 'sect5'">5</xsl:when> +          <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="level"> +        <xsl:choose> +          <xsl:when test="$renderas != ''"> +            <xsl:value-of select="$renderas"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="section.level"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <!-- xsl:use-attribute-sets takes only a Qname, not a variable --> +      <xsl:choose> +        <xsl:when test="$level = 1"> +          <xsl:element name="fo:{$section.container.element}" +		       use-attribute-sets="section.level1.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:when> +        <xsl:when test="$level = 2"> +          <xsl:element name="fo:{$section.container.element}" +		       use-attribute-sets="section.level2.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:when> +        <xsl:when test="$level = 3"> +          <xsl:element name="fo:{$section.container.element}" +                       use-attribute-sets="section.level3.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:when> +        <xsl:when test="$level = 4"> +          <xsl:element name="fo:{$section.container.element}" +                       use-attribute-sets="section.level4.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:when> +        <xsl:when test="$level = 5"> +          <xsl:element name="fo:{$section.container.element}" +		       use-attribute-sets="section.level5.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:when> +        <xsl:otherwise> +          <xsl:element name="fo:{$section.container.element}" +		       use-attribute-sets="section.level6.properties"> +            <xsl:attribute name="id"><xsl:value-of  +                                select="$id"/></xsl:attribute> +            <xsl:call-template name="section.content"/> +          </xsl:element> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="section.content"> +  <xsl:call-template name="section.titlepage"/> + +  <xsl:variable name="toc.params"> +    <xsl:call-template name="find.path.params"> +      <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:if test="contains($toc.params, 'toc') +                and (count(ancestor::section)+1) <=  +		$generate.section.toc.level"> +    <xsl:call-template name="section.toc"> +      <xsl:with-param name="toc.title.p"  +                      select="contains($toc.params, 'title')"/> +    </xsl:call-template> +   <xsl:call-template name="section.toc.separator"/> +  </xsl:if> + +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="/section" name="section.page.sequence"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}"  +            xsl:use-attribute-sets="section.level1.properties"> +        <xsl:call-template name="section.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc') +                    and (count(ancestor::section)+1) <=  +		    $generate.section.toc.level"> +        <xsl:call-template name="section.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="section.toc.separator"/> +      </xsl:if> + +      <xsl:apply-templates/> +   </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="section/title +                     |simplesect/title +                     |sect1/title +                     |sect2/title +                     |sect3/title +                     |sect4/title +                     |sect5/title +                     |section/info/title +                     |simplesect/info/title +                     |sect1/info/title +                     |sect2/info/title +                     |sect3/info/title +                     |sect4/info/title +                     |sect5/info/title +                     |section/sectioninfo/title +                     |sect1/sect1info/title +                     |sect2/sect2info/title +                     |sect3/sect3info/title +                     |sect4/sect4info/title +                     |sect5/sect5info/title" +              mode="titlepage.mode" +              priority="2"> + +  <xsl:variable name="section"  +                select="(ancestor::section | +                        ancestor::simplesect | +                        ancestor::sect1 | +                        ancestor::sect2 | +                        ancestor::sect3 | +                        ancestor::sect4 | +                        ancestor::sect5)[position() = last()]"/> + +  <fo:block keep-with-next.within-column="always"> +    <xsl:variable name="id"> +      <xsl:call-template name="object.id"> +        <xsl:with-param name="object" select="$section"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:variable name="renderas"> +      <xsl:choose> +        <xsl:when test="$section/@renderas = 'sect1'">1</xsl:when> +        <xsl:when test="$section/@renderas = 'sect2'">2</xsl:when> +        <xsl:when test="$section/@renderas = 'sect3'">3</xsl:when> +        <xsl:when test="$section/@renderas = 'sect4'">4</xsl:when> +        <xsl:when test="$section/@renderas = 'sect5'">5</xsl:when> +        <xsl:otherwise><xsl:value-of select="''"/></xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +   +    <xsl:variable name="level"> +      <xsl:choose> +        <xsl:when test="$renderas != ''"> +          <xsl:value-of select="$renderas"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="section.level"> +            <xsl:with-param name="node" select="$section"/> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:variable> + +    <xsl:variable name="marker"> +      <xsl:choose> +        <xsl:when test="$level <= $marker.section.level">1</xsl:when> +        <xsl:otherwise>0</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> + +    <xsl:variable name="title"> +      <xsl:apply-templates select="$section" mode="object.title.markup"> +        <xsl:with-param name="allow-anchors" select="1"/> +      </xsl:apply-templates> +    </xsl:variable> + +    <xsl:variable name="marker.title"> +      <xsl:apply-templates select="$section" mode="titleabbrev.markup"> +        <xsl:with-param name="allow-anchors" select="0"/> +      </xsl:apply-templates> +    </xsl:variable> + +    <xsl:if test="$passivetex.extensions != 0"> +      <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex"  +                      fotex-bookmark-level="{$level + 2}"  +                      fotex-bookmark-label="{$id}"> +        <xsl:value-of select="$marker.title"/> +      </fotex:bookmark> +    </xsl:if> + +    <xsl:if test="$axf.extensions != 0"> +      <xsl:attribute name="axf:outline-level"> +        <xsl:value-of select="count(ancestor::*)-1"/> +      </xsl:attribute> +      <xsl:attribute name="axf:outline-expand">false</xsl:attribute> +      <xsl:attribute name="axf:outline-title"> +        <xsl:value-of select="normalize-space($title)"/> +      </xsl:attribute> +    </xsl:if> + +    <xsl:call-template name="section.heading"> +      <xsl:with-param name="level" select="$level"/> +      <xsl:with-param name="title" select="$title"/> +      <xsl:with-param name="marker" select="$marker"/> +      <xsl:with-param name="marker.title" select="$marker.title"/> +    </xsl:call-template> +  </fo:block> +</xsl:template> + +<xsl:template match="sect1"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}" +               use-attribute-sets="section.level1.properties"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="sect1.titlepage"/> + +    <xsl:variable name="toc.params"> +      <xsl:call-template name="find.path.params"> +        <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:if test="contains($toc.params, 'toc') +                  and $generate.section.toc.level >= 1"> +      <xsl:call-template name="section.toc"> +        <xsl:with-param name="toc.title.p"  +                        select="contains($toc.params, 'title')"/> +      </xsl:call-template> +      <xsl:call-template name="section.toc.separator"/> +    </xsl:if> + +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="/sect1"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <fo:page-sequence hyphenate="{$hyphenate}" +                    master-reference="{$master-reference}"> +    <xsl:attribute name="language"> +      <xsl:call-template name="l10n.language"/> +    </xsl:attribute> +    <xsl:attribute name="format"> +      <xsl:call-template name="page.number.format"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="initial-page-number"> +      <xsl:call-template name="initial.page.number"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="force-page-count"> +      <xsl:call-template name="force.page.count"> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:attribute name="hyphenation-character"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-character'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-push-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> +    <xsl:attribute name="hyphenation-remain-character-count"> +      <xsl:call-template name="gentext"> +        <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +      </xsl:call-template> +    </xsl:attribute> + +    <xsl:apply-templates select="." mode="running.head.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> +    <xsl:apply-templates select="." mode="running.foot.mode"> +      <xsl:with-param name="master-reference" select="$master-reference"/> +    </xsl:apply-templates> + +    <fo:flow flow-name="xsl-region-body"> +      <xsl:call-template name="set.flow.properties"> +        <xsl:with-param name="element" select="local-name(.)"/> +        <xsl:with-param name="master-reference" select="$master-reference"/> +      </xsl:call-template> + +      <fo:block id="{$id}"  +                xsl:use-attribute-sets="section.level1.properties"> +        <xsl:call-template name="sect1.titlepage"/> +      </fo:block> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:if test="contains($toc.params, 'toc') +                    and $generate.section.toc.level >= 1"> +        <xsl:call-template name="section.toc"> +          <xsl:with-param name="toc.title.p"  +                          select="contains($toc.params, 'title')"/> +        </xsl:call-template> +        <xsl:call-template name="section.toc.separator"/> +      </xsl:if> + +      <xsl:apply-templates/> +   </fo:flow> +  </fo:page-sequence> +</xsl:template> + +<xsl:template match="sect2"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}" +	       use-attribute-sets="section.level2.properties"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="sect2.titlepage"/> + +    <xsl:variable name="toc.params"> +      <xsl:call-template name="find.path.params"> +        <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:if test="contains($toc.params, 'toc') +                   and $generate.section.toc.level >= 2"> +      <xsl:call-template name="section.toc"> +        <xsl:with-param name="toc.title.p"  +                        select="contains($toc.params, 'title')"/> +      </xsl:call-template> +      <xsl:call-template name="section.toc.separator"/> +    </xsl:if> + +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="sect3"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}" +	       use-attribute-sets="section.level3.properties"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="sect3.titlepage"/> + +    <xsl:variable name="toc.params"> +      <xsl:call-template name="find.path.params"> +        <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:if test="contains($toc.params, 'toc') +                  and $generate.section.toc.level >= 3"> +      <xsl:call-template name="section.toc"> +        <xsl:with-param name="toc.title.p"  +                        select="contains($toc.params, 'title')"/> +      </xsl:call-template> +      <xsl:call-template name="section.toc.separator"/> +    </xsl:if> + +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="sect4"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}" +	       use-attribute-sets="section.level4.properties"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="sect4.titlepage"/> + +    <xsl:variable name="toc.params"> +      <xsl:call-template name="find.path.params"> +        <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:if test="contains($toc.params, 'toc') +                  and $generate.section.toc.level >= 4"> +      <xsl:call-template name="section.toc"> +        <xsl:with-param name="toc.title.p"  +                        select="contains($toc.params, 'title')"/> +      </xsl:call-template> +      <xsl:call-template name="section.toc.separator"/> +    </xsl:if> + +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="sect5"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}" +	       use-attribute-sets="section.level5.properties"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="sect5.titlepage"/> + +    <xsl:variable name="toc.params"> +      <xsl:call-template name="find.path.params"> +        <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +      </xsl:call-template> +    </xsl:variable> + +    <xsl:if test="contains($toc.params, 'toc') +                  and $generate.section.toc.level >= 5"> +      <xsl:call-template name="section.toc"> +        <xsl:with-param name="toc.title.p"  +                        select="contains($toc.params, 'title')"/> +      </xsl:call-template> +      <xsl:call-template name="section.toc.separator"/> +    </xsl:if> + +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="simplesect"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:element name="fo:{$section.container.element}"> +    <xsl:attribute name="id"><xsl:value-of  +                        select="$id"/></xsl:attribute> +    <xsl:call-template name="simplesect.titlepage"/> +    <xsl:apply-templates/> +  </xsl:element> +</xsl:template> + +<xsl:template match="sectioninfo"></xsl:template> +<xsl:template match="section/info"></xsl:template> +<xsl:template match="section/title"></xsl:template> +<xsl:template match="section/titleabbrev"></xsl:template> +<xsl:template match="section/subtitle"></xsl:template> + +<xsl:template match="sect1info"></xsl:template> +<xsl:template match="sect1/info"></xsl:template> +<xsl:template match="sect1/title"></xsl:template> +<xsl:template match="sect1/titleabbrev"></xsl:template> +<xsl:template match="sect1/subtitle"></xsl:template> + +<xsl:template match="sect2info"></xsl:template> +<xsl:template match="sect2/info"></xsl:template> +<xsl:template match="sect2/title"></xsl:template> +<xsl:template match="sect2/titleabbrev"></xsl:template> +<xsl:template match="sect2/subtitle"></xsl:template> + +<xsl:template match="sect3info"></xsl:template> +<xsl:template match="sect3/info"></xsl:template> +<xsl:template match="sect3/title"></xsl:template> +<xsl:template match="sect3/titleabbrev"></xsl:template> +<xsl:template match="sect3/subtitle"></xsl:template> + +<xsl:template match="sect4info"></xsl:template> +<xsl:template match="sect4/info"></xsl:template> +<xsl:template match="sect4/title"></xsl:template> +<xsl:template match="sect4/titleabbrev"></xsl:template> +<xsl:template match="sect4/subtitle"></xsl:template> + +<xsl:template match="sect5info"></xsl:template> +<xsl:template match="sect5/info"></xsl:template> +<xsl:template match="sect5/title"></xsl:template> +<xsl:template match="sect5/titleabbrev"></xsl:template> +<xsl:template match="sect5/subtitle"></xsl:template> + +<xsl:template match="simplesect/info"></xsl:template> +<xsl:template match="simplesect/title"></xsl:template> +<xsl:template match="simplesect/titleabbrev"></xsl:template> +<xsl:template match="simplesect/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="section.heading"> +  <xsl:param name="level" select="1"/> +  <xsl:param name="marker" select="1"/> +  <xsl:param name="title"/> +  <xsl:param name="marker.title"/> + +  <fo:block xsl:use-attribute-sets="section.title.properties"> +    <xsl:if test="$marker != 0"> +      <fo:marker marker-class-name="section.head.marker"> +        <xsl:copy-of select="$marker.title"/> +      </fo:marker> +    </xsl:if> + +    <xsl:choose> +      <xsl:when test="$level=1"> +        <fo:block xsl:use-attribute-sets="section.title.level1.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=2"> +        <fo:block xsl:use-attribute-sets="section.title.level2.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=3"> +        <fo:block xsl:use-attribute-sets="section.title.level3.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=4"> +        <fo:block xsl:use-attribute-sets="section.title.level4.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:when test="$level=5"> +        <fo:block xsl:use-attribute-sets="section.title.level5.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:when> +      <xsl:otherwise> +        <fo:block xsl:use-attribute-sets="section.title.level6.properties"> +          <xsl:copy-of select="$title"/> +        </fo:block> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="bridgehead"> +  <xsl:variable name="container" +                select="(ancestor::appendix +                        |ancestor::article +                        |ancestor::bibliography +                        |ancestor::chapter +                        |ancestor::glossary +                        |ancestor::glossdiv +                        |ancestor::index +                        |ancestor::partintro +                        |ancestor::preface +                        |ancestor::refsect1 +                        |ancestor::refsect2 +                        |ancestor::refsect3 +                        |ancestor::sect1 +                        |ancestor::sect2 +                        |ancestor::sect3 +                        |ancestor::sect4 +                        |ancestor::sect5 +                        |ancestor::section +                        |ancestor::setindex +                        |ancestor::simplesect)[last()]"/> + +  <xsl:variable name="clevel"> +    <xsl:choose> +      <xsl:when test="local-name($container) = 'appendix' +                      or local-name($container) = 'chapter' +                      or local-name($container) = 'article' +                      or local-name($container) = 'bibliography' +                      or local-name($container) = 'glossary' +                      or local-name($container) = 'index' +                      or local-name($container) = 'partintro' +                      or local-name($container) = 'preface' +                      or local-name($container) = 'setindex'">2</xsl:when> +      <xsl:when test="local-name($container) = 'glossdiv'"> +        <xsl:value-of select="count(ancestor::glossdiv)+2"/> +      </xsl:when> +      <xsl:when test="local-name($container) = 'sect1' +                      or local-name($container) = 'sect2' +                      or local-name($container) = 'sect3' +                      or local-name($container) = 'sect4' +                      or local-name($container) = 'sect5' +                      or local-name($container) = 'refsect1' +                      or local-name($container) = 'refsect2' +                      or local-name($container) = 'refsect3' +                      or local-name($container) = 'section' +                      or local-name($container) = 'simplesect'"> +        <xsl:variable name="slevel"> +          <xsl:call-template name="section.level"> +            <xsl:with-param name="node" select="$container"/> +          </xsl:call-template> +        </xsl:variable> +        <xsl:value-of select="$slevel + 1"/> +      </xsl:when> +      <xsl:otherwise>2</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="level"> +    <xsl:choose> +      <xsl:when test="@renderas = 'sect1'">1</xsl:when> +      <xsl:when test="@renderas = 'sect2'">2</xsl:when> +      <xsl:when test="@renderas = 'sect3'">3</xsl:when> +      <xsl:when test="@renderas = 'sect4'">4</xsl:when> +      <xsl:when test="@renderas = 'sect5'">5</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$clevel"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="marker"> +    <xsl:choose> +      <xsl:when test="$level <= $marker.section.level">1</xsl:when> +      <xsl:otherwise>0</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="marker.title"> +    <xsl:apply-templates/> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:call-template name="section.heading"> +      <xsl:with-param name="level" select="$level"/> +      <xsl:with-param name="title"> +        <xsl:apply-templates/> +      </xsl:with-param> +      <xsl:with-param name="marker" select="$marker"/> +      <xsl:with-param name="marker.title" select="$marker.title"/> +    </xsl:call-template> +  </fo:block> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedMtIwcf b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedMtIwcf new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedMtIwcf diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedSGLJW3 b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedSGLJW3 new file mode 100644 index 0000000..a3403ab --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedSGLJW3 @@ -0,0 +1,1223 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: lists.xsl 8228 2007-07-21 15:00:15Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="itemizedlist"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="pi-label-width"> +    <xsl:call-template name="pi.dbfo_label-width"/> +  </xsl:variable> + +  <xsl:variable name="label-width"> +    <xsl:choose> +      <xsl:when test="$pi-label-width = ''"> +	<xsl:value-of select="$itemizedlist.label.width"/> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="$pi-label-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +      select="*[not(self::listitem +                or self::title +                or self::titleabbrev)] +              |comment()[not(preceding-sibling::listitem)] +              |processing-instruction()[not(preceding-sibling::listitem)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates  +          select="listitem +                  |comment()[preceding-sibling::listitem] +                  |processing-instruction()[preceding-sibling::listitem]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="itemizedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing itemizedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +	<xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<xsl:template match="itemizedlist/title|orderedlist/title"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/title" mode="vl.as.list"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/title" mode="vl.as.blocks"> +  <!--nop--> +</xsl:template> + +<xsl:template match="itemizedlist/titleabbrev|orderedlist/titleabbrev"> +  <!--nop--> +</xsl:template> + +<xsl:template match="procedure/titleabbrev"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/titleabbrev" mode="vl.as.list"> +  <!--nop--> +</xsl:template> + +<xsl:template match="variablelist/titleabbrev" mode="vl.as.blocks"> +  <!--nop--> +</xsl:template> + +<xsl:template match="itemizedlist/listitem"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="item.contents"> +    <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="itemizedlist.label.properties"> +      <fo:block> +        <xsl:call-template name="itemizedlist.label.markup"> +          <xsl:with-param name="itemsymbol"> +            <xsl:call-template name="list.itemsymbol"> +              <xsl:with-param name="node" select="parent::itemizedlist"/> +            </xsl:call-template> +          </xsl:with-param> +        </xsl:call-template> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <xsl:choose> +        <!-- * work around broken passivetex list-item-body rendering --> +        <xsl:when test="$passivetex.extensions = '1'"> +          <xsl:apply-templates/> +        </xsl:when> +        <xsl:otherwise> +          <fo:block> +            <xsl:apply-templates/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </fo:list-item-body> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*/@spacing = 'compact'"> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="itemizedlist.label.markup"> +  <xsl:param name="itemsymbol" select="'disc'"/> + +  <xsl:choose> +    <xsl:when test="$itemsymbol='none'"></xsl:when> +    <xsl:when test="$itemsymbol='disc'">•</xsl:when> +    <xsl:when test="$itemsymbol='bullet'">•</xsl:when> +    <xsl:when test="$itemsymbol='endash'">–</xsl:when> +    <xsl:when test="$itemsymbol='emdash'">—</xsl:when> +    <!-- Some of these may work in your XSL-FO processor and fonts --> +    <!-- +    <xsl:when test="$itemsymbol='square'">■</xsl:when> +    <xsl:when test="$itemsymbol='box'">■</xsl:when> +    <xsl:when test="$itemsymbol='smallblacksquare'">▪</xsl:when> +    <xsl:when test="$itemsymbol='circle'">○</xsl:when> +    <xsl:when test="$itemsymbol='opencircle'">○</xsl:when> +    <xsl:when test="$itemsymbol='whitesquare'">□</xsl:when> +    <xsl:when test="$itemsymbol='smallwhitesquare'">▫</xsl:when> +    <xsl:when test="$itemsymbol='round'">●</xsl:when> +    <xsl:when test="$itemsymbol='blackcircle'">●</xsl:when> +    <xsl:when test="$itemsymbol='whitebullet'">◦</xsl:when> +    <xsl:when test="$itemsymbol='triangle'">‣</xsl:when> +    <xsl:when test="$itemsymbol='point'">›</xsl:when> +    <xsl:when test="$itemsymbol='hand'"><fo:inline  +                         font-family="Wingdings 2">A</fo:inline></xsl:when> +    --> +    <xsl:otherwise>•</xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="orderedlist"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="pi-label-width"> +    <xsl:call-template name="pi.dbfo_label-width"/> +  </xsl:variable> + +  <xsl:variable name="label-width"> +    <xsl:choose> +      <xsl:when test="$pi-label-width = ''"> +	<xsl:value-of select="$orderedlist.label.width"/> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="$pi-label-width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +      select="*[not(self::listitem +                or self::title +                or self::titleabbrev)] +              |comment()[not(preceding-sibling::listitem)] +              |processing-instruction()[not(preceding-sibling::listitem)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates  +          select="listitem +                  |comment()[preceding-sibling::listitem] +                  |processing-instruction()[preceding-sibling::listitem]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="orderedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing orderedlist.properties"> +	<xsl:attribute name="provisional-distance-between-starts"> +	  <xsl:value-of select="$label-width"/> +	</xsl:attribute> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="orderedlist/listitem" mode="item-number"> +  <xsl:variable name="numeration"> +    <xsl:call-template name="list.numeration"> +      <xsl:with-param name="node" select="parent::orderedlist"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:choose> +      <xsl:when test="$numeration='arabic'">1.</xsl:when> +      <xsl:when test="$numeration='loweralpha'">a.</xsl:when> +      <xsl:when test="$numeration='lowerroman'">i.</xsl:when> +      <xsl:when test="$numeration='upperalpha'">A.</xsl:when> +      <xsl:when test="$numeration='upperroman'">I.</xsl:when> +      <!-- What!? This should never happen --> +      <xsl:otherwise> +        <xsl:message> +          <xsl:text>Unexpected numeration: </xsl:text> +          <xsl:value-of select="$numeration"/> +        </xsl:message> +        <xsl:value-of select="1."/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="item-number"> +    <xsl:call-template name="orderedlist-item-number"/> +  </xsl:variable> + +  <xsl:if test="parent::orderedlist/@inheritnum='inherit' +                and ancestor::listitem[parent::orderedlist]"> +    <xsl:apply-templates select="ancestor::listitem[parent::orderedlist][1]" +                         mode="item-number"/> +  </xsl:if> + +  <xsl:number value="$item-number" format="{$type}"/> +</xsl:template> + +<xsl:template match="orderedlist/listitem"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="item.contents"> +    <fo:list-item-label end-indent="label-end()" xsl:use-attribute-sets="orderedlist.label.properties"> +      <fo:block> +        <xsl:apply-templates select="." mode="item-number"/> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*/@spacing = 'compact'"> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="compact.list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="listitem/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara'] +                     |glossdef/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara'] +                     |step/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara'] +                     |callout/*[1][local-name()='para' or  +                                   local-name()='simpara' or  +                                   local-name()='formalpara']" +              priority="2"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="variablelist"> +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_list-presentation"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$presentation = 'list'"> +      <xsl:apply-templates select="." mode="vl.as.list"/> +    </xsl:when> +    <xsl:when test="$presentation = 'blocks'"> +      <xsl:apply-templates select="." mode="vl.as.blocks"/> +    </xsl:when> +    <xsl:when test="$variablelist.as.blocks != 0"> +      <xsl:apply-templates select="." mode="vl.as.blocks"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="." mode="vl.as.list"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="variablelist" mode="vl.as.list"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="term-width"> +    <xsl:call-template name="pi.dbfo_term-width"/> +  </xsl:variable> + +  <xsl:variable name="termlength"> +    <xsl:choose> +      <xsl:when test="$term-width != ''"> +        <xsl:value-of select="$term-width"/> +      </xsl:when> +      <xsl:when test="@termlength"> +        <xsl:variable name="termlength.is.number"> +          <xsl:value-of select="@termlength + 0"/> +        </xsl:variable> +        <xsl:choose> +          <xsl:when test="string($termlength.is.number) = 'NaN'"> +            <!-- if the term length isn't just a number, assume it's a measurement --> +            <xsl:value-of select="@termlength"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="@termlength"/> +            <xsl:choose> +              <!-- workaround for passivetex lack of support for non-constant expressions --> +              <xsl:when test="$passivetex.extensions != 0"> +                <xsl:text>em</xsl:text> +              </xsl:when> +              <xsl:otherwise> +                <xsl:text>em * 0.60</xsl:text> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="longest.term"> +          <xsl:with-param name="terms" select="varlistentry/term"/> +          <xsl:with-param name="maxlength" select="$variablelist.max.termlength"/> +        </xsl:call-template> +        <xsl:choose> +          <!-- workaround for passivetex lack of support for non-constant expressions --> +          <xsl:when test="$passivetex.extensions != 0"> +            <xsl:text>em</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:text>em * 0.60</xsl:text> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +<!-- +  <xsl:message> +    <xsl:text>term width: </xsl:text> +    <xsl:value-of select="$termlength"/> +  </xsl:message> +--> + +  <xsl:variable name="label-separation">1em</xsl:variable> +  <xsl:variable name="distance-between-starts"> +    <xsl:choose> +      <!-- workaround for passivetex lack of support for non-constant expressions --> +      <xsl:when test="$passivetex.extensions != 0"> +        <xsl:value-of select="$termlength"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$termlength"/> +        <xsl:text>+</xsl:text> +        <xsl:value-of select="$label-separation"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +    select="*[not(self::varlistentry +              or self::title +              or self::titleabbrev)] +            |comment()[not(preceding-sibling::varlistentry)] +            |processing-instruction()[not(preceding-sibling::varlistentry)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates mode="vl.as.list" +      select="varlistentry +              |comment()[preceding-sibling::varlistentry] +              |processing-instruction()[preceding-sibling::varlistentry]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:list-block id="{$id}" +                     provisional-distance-between-starts= +                        "{$distance-between-starts}" +                     provisional-label-separation="{$label-separation}"> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-block id="{$id}" +                     provisional-distance-between-starts= +                        "{$distance-between-starts}" +                     provisional-label-separation="{$label-separation}" +                     xsl:use-attribute-sets="list.block.spacing"> +        <xsl:copy-of select="$content"/> +      </fo:list-block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="longest.term"> +  <xsl:param name="longest" select="0"/> +  <xsl:param name="terms" select="."/> +  <xsl:param name="maxlength" select="-1"/> + +  <!-- Process out any indexterms in the term --> +  <xsl:variable name="term.text"> +    <xsl:apply-templates select="$terms[1]"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$longest > $maxlength and $maxlength > 0"> +      <xsl:value-of select="$maxlength"/> +    </xsl:when> +    <xsl:when test="not($terms)"> +      <xsl:value-of select="$longest"/> +    </xsl:when> +    <xsl:when test="string-length($term.text) > $longest"> +      <xsl:call-template name="longest.term"> +        <xsl:with-param name="longest"  +            select="string-length($term.text)"/> +        <xsl:with-param name="maxlength" select="$maxlength"/> +        <xsl:with-param name="terms" select="$terms[position() > 1]"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="longest.term"> +        <xsl:with-param name="longest" select="$longest"/> +        <xsl:with-param name="maxlength" select="$maxlength"/> +        <xsl:with-param name="terms" select="$terms[position() > 1]"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varlistentry" mode="vl.as.list"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="item.contents"> +    <fo:list-item-label end-indent="label-end()" text-align="start"> +      <fo:block> +        <xsl:apply-templates select="term"/> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates select="listitem"/> +      </fo:block> +    </fo:list-item-body> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="parent::*/@spacing = 'compact'"> +      <fo:list-item id="{$id}" +          xsl:use-attribute-sets="compact.list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:when> +    <xsl:otherwise> +      <fo:list-item id="{$id}" xsl:use-attribute-sets="list.item.spacing"> +        <xsl:copy-of select="$item.contents"/> +      </fo:list-item> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + + +<xsl:template match="variablelist" mode="vl.as.blocks"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <!-- termlength is irrelevant --> + +  <xsl:if test="title"> +    <xsl:apply-templates select="title" mode="list.title.mode"/> +  </xsl:if> + +  <!-- Preserve order of PIs and comments --> +  <xsl:apply-templates  +    select="*[not(self::varlistentry +              or self::title +              or self::titleabbrev)] +            |comment()[not(preceding-sibling::varlistentry)] +            |processing-instruction()[not(preceding-sibling::varlistentry)]"/> + +  <xsl:variable name="content"> +    <xsl:apply-templates mode="vl.as.blocks" +      select="varlistentry +              |comment()[preceding-sibling::varlistentry] +              |processing-instruction()[preceding-sibling::varlistentry]"/> +  </xsl:variable> + +  <!-- nested lists don't add extra list-block spacing --> +  <xsl:choose> +    <xsl:when test="ancestor::listitem"> +      <fo:block id="{$id}"> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" xsl:use-attribute-sets="list.block.spacing"> +        <xsl:copy-of select="$content"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varlistentry" mode="vl.as.blocks"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing"   +      keep-together.within-column="always"  +      keep-with-next.within-column="always"> +    <xsl:apply-templates select="term"/> +  </fo:block> + +  <fo:block margin-left="0.25in"> +    <xsl:apply-templates select="listitem"/> +  </fo:block> +</xsl:template> + +<xsl:template match="varlistentry/term"> +  <fo:inline> +    <xsl:call-template name="simple.xlink"> +      <xsl:with-param name="content"> +        <xsl:apply-templates/> +      </xsl:with-param> +    </xsl:call-template> +  </fo:inline> +  <xsl:choose> +    <xsl:when test="not(following-sibling::term)"/> <!-- do nothing --> +    <xsl:otherwise> +      <!-- * if we have multiple terms in the same varlistentry, generate --> +      <!-- * a separator (", " by default) and/or an additional line --> +      <!-- * break after each one except the last --> +      <fo:inline><xsl:value-of select="$variablelist.term.separator"/></fo:inline> +      <xsl:if test="not($variablelist.term.break.after = '0')"> +        <fo:block/> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varlistentry/listitem"> +  <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="title" mode="list.title.mode"> +  <xsl:call-template name="formal.object.heading"> +    <xsl:with-param name="object" select=".."/> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="simplelist|simplelist[@type='vert']"> +  <!-- with no type specified, the default is 'vert' --> + +  <xsl:variable name="explicit.table.width"> +    <xsl:call-template name="dbfo-attribute"> +      <xsl:with-param name="pis" +		      select="processing-instruction('dbfo')"/> +      <xsl:with-param name="attribute" select="'list-width'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="table.width"> +    <xsl:choose> +      <xsl:when test="$explicit.table.width != ''"> +        <xsl:value-of select="$explicit.table.width"/> +      </xsl:when> +      <xsl:when test="$default.table.width = ''"> +        <xsl:text>100%</xsl:text> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$default.table.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:table xsl:use-attribute-sets="normal.para.spacing"> + +    <xsl:choose> +      <xsl:when test="$axf.extensions != 0 or $xep.extensions != 0"> +	<xsl:attribute name="table-layout">auto</xsl:attribute> +        <xsl:if test="$explicit.table.width != ''"> +          <xsl:attribute name="width"><xsl:value-of  +	  select="$explicit.table.width"/></xsl:attribute> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="table-layout">fixed</xsl:attribute> +        <xsl:attribute name="width"><xsl:value-of  +                                      select="$table.width"/></xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> + +    <xsl:call-template name="simplelist.table.columns"> +      <xsl:with-param name="cols"> +        <xsl:choose> +          <xsl:when test="@columns"> +            <xsl:value-of select="@columns"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <xsl:call-template name="simplelist.vert"> +        <xsl:with-param name="cols"> +          <xsl:choose> +            <xsl:when test="@columns"> +              <xsl:value-of select="@columns"/> +            </xsl:when> +            <xsl:otherwise>1</xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +      </xsl:call-template> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template match="simplelist[@type='inline']"> +  <!-- if dbchoice PI exists, use that to determine the choice separator --> +  <!-- (that is, equivalent of "and" or "or" in current locale), or literal --> +  <!-- value of "choice" otherwise --> +  <fo:inline><xsl:variable name="localized-choice-separator"> +    <xsl:choose> +      <xsl:when test="processing-instruction('dbchoice')"> +        <xsl:call-template name="select.choice.separator"/> +      </xsl:when> +      <xsl:otherwise> +        <!-- empty --> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:for-each select="member"> +    <xsl:apply-templates/> +    <xsl:choose> +      <xsl:when test="position() = last()"/> <!-- do nothing --> +      <xsl:otherwise> +	<xsl:text>, </xsl:text> +	<xsl:if test="position() = last() - 1"> +	  <xsl:if test="$localized-choice-separator != ''"> +	    <xsl:value-of select="$localized-choice-separator"/> +	    <xsl:text> </xsl:text> +	  </xsl:if> +	</xsl:if> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:for-each></fo:inline> +</xsl:template> + +<xsl:template match="simplelist[@type='horiz']"> + +  <xsl:variable name="explicit.table.width"> +    <xsl:call-template name="pi.dbfo_list-width"/> +  </xsl:variable> + +  <xsl:variable name="table.width"> +    <xsl:choose> +      <xsl:when test="$explicit.table.width != ''"> +        <xsl:value-of select="$explicit.table.width"/> +      </xsl:when> +      <xsl:when test="$default.table.width = ''"> +        <xsl:text>100%</xsl:text> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$default.table.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:table xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:choose> +      <xsl:when test="$axf.extensions != 0 or $xep.extensions != 0"> +        <xsl:attribute name="table-layout">auto</xsl:attribute> +        <xsl:if test="$explicit.table.width != ''"> +          <xsl:attribute name="width"><xsl:value-of  +                             select="$explicit.table.width"/></xsl:attribute> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="table-layout">fixed</xsl:attribute> +        <xsl:attribute name="width"><xsl:value-of  +                                      select="$table.width"/></xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:call-template name="simplelist.table.columns"> +      <xsl:with-param name="cols"> +        <xsl:choose> +          <xsl:when test="@columns"> +            <xsl:value-of select="@columns"/> +          </xsl:when> +          <xsl:otherwise>1</xsl:otherwise> +        </xsl:choose> +      </xsl:with-param> +    </xsl:call-template> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <xsl:call-template name="simplelist.horiz"> +        <xsl:with-param name="cols"> +          <xsl:choose> +            <xsl:when test="@columns"> +              <xsl:value-of select="@columns"/> +            </xsl:when> +            <xsl:otherwise>1</xsl:otherwise> +          </xsl:choose> +        </xsl:with-param> +      </xsl:call-template> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template name="simplelist.table.columns"> +  <xsl:param name="cols" select="1"/> +  <xsl:param name="curcol" select="1"/> +  <fo:table-column column-number="{$curcol}" +                   column-width="proportional-column-width(1)"/> +  <xsl:if test="$curcol < $cols"> +    <xsl:call-template name="simplelist.table.columns"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="curcol" select="$curcol + 1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.horiz"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> + +  <xsl:if test="$cell <= count($members)"> +    <fo:table-row> +      <xsl:call-template name="simplelist.horiz.row"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="cell" select="$cell"/> +        <xsl:with-param name="members" select="$members"/> +      </xsl:call-template> +   </fo:table-row> +    <xsl:call-template name="simplelist.horiz"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell + $cols"/> +      <xsl:with-param name="members" select="$members"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.horiz.row"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="curcol">1</xsl:param> + +  <xsl:if test="$curcol <= $cols"> +    <fo:table-cell> +      <fo:block> +        <xsl:if test="$members[position()=$cell]"> +          <xsl:apply-templates select="$members[position()=$cell]"/> +        </xsl:if> +      </fo:block> +    </fo:table-cell> +    <xsl:call-template name="simplelist.horiz.row"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell+1"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="curcol" select="$curcol+1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.vert"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="rows" +             select="floor((count($members)+$cols - 1) div $cols)"/> + +  <xsl:if test="$cell <= $rows"> +    <fo:table-row> +      <xsl:call-template name="simplelist.vert.row"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="rows" select="$rows"/> +        <xsl:with-param name="cell" select="$cell"/> +        <xsl:with-param name="members" select="$members"/> +      </xsl:call-template> +   </fo:table-row> +    <xsl:call-template name="simplelist.vert"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="cell" select="$cell+1"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="rows" select="$rows"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template name="simplelist.vert.row"> +  <xsl:param name="cols">1</xsl:param> +  <xsl:param name="rows">1</xsl:param> +  <xsl:param name="cell">1</xsl:param> +  <xsl:param name="members" select="./member"/> +  <xsl:param name="curcol">1</xsl:param> + +  <xsl:if test="$curcol <= $cols"> +    <fo:table-cell> +      <fo:block> +        <xsl:if test="$members[position()=$cell]"> +          <xsl:apply-templates select="$members[position()=$cell]"/> +        </xsl:if> +      </fo:block> +    </fo:table-cell> +    <xsl:call-template name="simplelist.vert.row"> +      <xsl:with-param name="cols" select="$cols"/> +      <xsl:with-param name="rows" select="$rows"/> +      <xsl:with-param name="cell" select="$cell+$rows"/> +      <xsl:with-param name="members" select="$members"/> +      <xsl:with-param name="curcol" select="$curcol+1"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + +<xsl:template match="member"> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content"> +      <xsl:apply-templates/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="procedure"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="param.placement" +                select="substring-after(normalize-space($formal.title.placement), +                                        concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Preserve order of PIs and comments --> +  <xsl:variable name="preamble" +        select="*[not(self::step +                  or self::title +                  or self::titleabbrev)] +                |comment()[not(preceding-sibling::step)] +                |processing-instruction()[not(preceding-sibling::step)]"/> + +  <xsl:variable name="steps"  +                select="step +                        |comment()[preceding-sibling::step] +                        |processing-instruction()[preceding-sibling::step]"/> + +  <fo:block id="{$id}" xsl:use-attribute-sets="procedure.properties list.block.spacing"> +    <xsl:if test="./title and $placement = 'before'"> +      <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" --> +      <!-- heading even though we called formal.object.heading. odd but true. --> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <xsl:apply-templates select="$preamble"/> + +    <fo:list-block xsl:use-attribute-sets="list.block.spacing" +                   provisional-distance-between-starts="2em" +                   provisional-label-separation="0.2em"> +      <xsl:apply-templates select="$steps"/> +    </fo:list-block> + +    <xsl:if test="./title and $placement != 'before'"> +      <!-- n.b. gentext code tests for $formal.procedures and may make an "informal" --> +      <!-- heading even though we called formal.object.heading. odd but true. --> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="procedure/title"> +</xsl:template> + +<xsl:template match="substeps"> +  <fo:list-block xsl:use-attribute-sets="list.block.spacing" +                 provisional-distance-between-starts="2em" +                 provisional-label-separation="0.2em"> +    <xsl:apply-templates/> +  </fo:list-block> +</xsl:template> + +<xsl:template match="procedure/step|substeps/step"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:list-item xsl:use-attribute-sets="list.item.spacing"> +    <fo:list-item-label end-indent="label-end()"> +      <fo:block id="{$id}"> +        <!-- dwc: fix for one step procedures. Use a bullet if there's no step 2 --> +        <xsl:choose> +          <xsl:when test="count(../step) = 1"> +            <xsl:text>•</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="." mode="number"> +              <xsl:with-param name="recursive" select="0"/> +            </xsl:apply-templates>. +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="stepalternatives"> +  <fo:list-block provisional-distance-between-starts="2em" +                 provisional-label-separation="0.2em"> +    <xsl:apply-templates select="step"/> +  </fo:list-block> +</xsl:template> + +<xsl:template match="stepalternatives/step"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:list-item xsl:use-attribute-sets="list.item.spacing"> +    <fo:list-item-label end-indent="label-end()"> +      <fo:block id="{$id}"> +        <xsl:text>•</xsl:text> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template match="step/title"> +  <fo:block font-weight="bold" +            keep-together.within-column="always"  +            keep-with-next.within-column="always"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="segmentedlist"> +  <xsl:variable name="presentation"> +    <xsl:call-template name="pi.dbfo_list-presentation"/> +  </xsl:variable> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$presentation = 'table'"> +      <fo:block id="{$id}"> +        <xsl:apply-templates select="." mode="seglist-table"/> +      </fo:block> +    </xsl:when> +    <xsl:when test="$presentation = 'list'"> +      <fo:block id="{$id}"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:when> +    <xsl:when test="$segmentedlist.as.table != 0"> +      <fo:block id="{$id}"> +        <xsl:apply-templates select="." mode="seglist-table"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}"> +        <xsl:apply-templates/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="segmentedlist/title"> +  <xsl:apply-templates select="." mode="list.title.mode" /> +</xsl:template> + +<xsl:template match="segtitle"> +</xsl:template> + +<xsl:template match="segtitle" mode="segtitle-in-seg"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="seglistitem"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:block id="{$id}"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="seg"> +  <xsl:variable name="segnum" select="count(preceding-sibling::seg)+1"/> +  <xsl:variable name="seglist" select="ancestor::segmentedlist"/> +  <xsl:variable name="segtitles" select="$seglist/segtitle"/> + +  <!-- +     Note: segtitle is only going to be the right thing in a well formed +     SegmentedList.  If there are too many Segs or too few SegTitles, +     you'll get something odd...maybe an error +  --> + +  <fo:block> +    <fo:inline font-weight="bold"> +      <xsl:apply-templates select="$segtitles[$segnum=position()]" +                           mode="segtitle-in-seg"/> +      <xsl:text>: </xsl:text> +    </fo:inline> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="segmentedlist" mode="seglist-table"> +  <xsl:apply-templates select="title" mode="list.title.mode" /> +  <fo:table> +    <fo:table-column column-number="1" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="2" column-width="proportional-column-width(1)"/> +    <fo:table-header start-indent="0pt" end-indent="0pt"> +      <fo:table-row> +        <xsl:apply-templates select="segtitle" mode="seglist-table"/> +      </fo:table-row> +    </fo:table-header> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <xsl:apply-templates select="seglistitem" mode="seglist-table"/> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template match="segtitle" mode="seglist-table"> +  <fo:table-cell> +    <fo:block font-weight="bold"> +      <xsl:apply-templates/> +    </fo:block> +  </fo:table-cell> +</xsl:template> + +<xsl:template match="seglistitem" mode="seglist-table"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:table-row id="{$id}"> +    <xsl:apply-templates mode="seglist-table"/> +  </fo:table-row> +</xsl:template> + +<xsl:template match="seg" mode="seglist-table"> +  <fo:table-cell> +    <fo:block> +      <xsl:apply-templates/> +    </fo:block> +  </fo:table-cell> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="calloutlist"> +  <xsl:variable name="id"> +  <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}" +            text-align="{$alignment}"> +    <!-- The above restores alignment altered by image align attribute --> +    <xsl:if test="title|info/title"> +      <xsl:apply-templates select="(title|info/title)[1]"  +                           mode="list.title.mode"/> +    </xsl:if> + +    <!-- Preserve order of PIs and comments --> +    <xsl:apply-templates  +         select="*[not(self::callout or self::title or self::titleabbrev)] +                   |comment()[not(preceding-sibling::callout)] +                   |processing-instruction()[not(preceding-sibling::callout)]"/> + +    <fo:list-block space-before.optimum="1em" +                   space-before.minimum="0.8em" +                   space-before.maximum="1.2em" +                   provisional-distance-between-starts="2.2em" +                   provisional-label-separation="0.2em"> +      <xsl:apply-templates select="callout +                                |comment()[preceding-sibling::callout] +                                |processing-instruction()[preceding-sibling::callout]"/> +    </fo:list-block> +  </fo:block> +</xsl:template> + +<xsl:template match="calloutlist/title"> +</xsl:template> + +<xsl:template match="callout"> +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> +  <fo:list-item id="{$id}"> +    <fo:list-item-label end-indent="label-end()"> +      <fo:block> +        <xsl:call-template name="callout.arearefs"> +          <xsl:with-param name="arearefs" select="@arearefs"/> +        </xsl:call-template> +      </fo:block> +    </fo:list-item-label> +    <fo:list-item-body start-indent="body-start()"> +      <fo:block> +        <xsl:apply-templates/> +      </fo:block> +    </fo:list-item-body> +  </fo:list-item> +</xsl:template> + +<xsl:template name="callout.arearefs"> +  <xsl:param name="arearefs"></xsl:param> +  <xsl:if test="$arearefs!=''"> +    <xsl:choose> +      <xsl:when test="substring-before($arearefs,' ')=''"> +        <xsl:call-template name="callout.arearef"> +          <xsl:with-param name="arearef" select="$arearefs"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="callout.arearef"> +          <xsl:with-param name="arearef" +                          select="substring-before($arearefs,' ')"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:call-template name="callout.arearefs"> +      <xsl:with-param name="arearefs" +                      select="substring-after($arearefs,' ')"/> +    </xsl:call-template> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedfPLpz9 b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedfPLpz9 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedfPLpz9 diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedjnuO7O b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedjnuO7O new file mode 100644 index 0000000..cb3e70c --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/sedjnuO7O @@ -0,0 +1,133 @@ +<?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 sep '" "'> +<!-- 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:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService" +                exclude-result-prefixes="k" +                version="1.0"> + +<!-- ******************************************************************** +     $Id: autoidx-kimber.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen.  --> +<!-- ==================================================================== --> +<!--   *** THIS MODULE ONLY WORKS WITH SAXON 6 OR SAXON 8 ***             --> +<!-- ==================================================================== --> + +<xsl:include href="../common/autoidx-kimber.xsl"/> + +<!-- Java sort apparently works only on lang part, not country --> +<xsl:param name="sort.lang"> +  <xsl:choose> +    <xsl:when test="contains(⟨, '-')"> +      <xsl:value-of select="substring-before(⟨, '-')"/> +    </xsl:when> +    <xsl:when test="contains(⟨, '_')"> +      <xsl:value-of select="substring-before(⟨, '_')"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="⟨"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:param> + +<xsl:template name="generate-kimber-index"> +  <xsl:param name="scope" select="NOTANODE"/> + +  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> +  <xsl:if test="not(contains($vendor, 'SAXON '))"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> +      <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:if test="not(function-available('k:getIndexGroupKey'))"> +    <xsl:message terminate="yes"> +      <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> +      <xsl:text>Innodata Isogen 
Java extensions for </xsl:text> +      <xsl:text>internationalized indexes. 
Install those </xsl:text> +      <xsl:text>extensions, or use a different index method.
</xsl:text> +      <xsl:text>For more information, see:
</xsl:text> +      <xsl:text>http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:variable name="role"> +    <xsl:if test="$index.on.role != 0"> +      <xsl:value-of select="@role"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="type"> +    <xsl:if test="$index.on.type != 0"> +      <xsl:value-of select="@type"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="terms" +                select="//indexterm[count(.|key('k-group', +                   k:getIndexGroupKey(⟨, &primary;)) +                   [&scope;][1]) = 1 +                   and not(@class = 'endofrange')]"/> + +  <xsl:variable name="alphabetical" +                select="$terms[not(starts-with( +                k:getIndexGroupKey(⟨, &primary;), +                '#NUMERIC' +                ))]"/> + +  <xsl:variable name="others" +                select="$terms[starts-with( +                k:getIndexGroupKey(⟨, &primary;), +                '#NUMERIC' +                )]"/> + +  <fo:block> +    <xsl:if test="$others"> +      <xsl:call-template name="indexdiv.title"> +        <xsl:with-param name="titlecontent"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'index symbols'"/> +          </xsl:call-template> +        </xsl:with-param> +      </xsl:call-template> + +      <fo:block> +        <xsl:apply-templates select="$others" +                             mode="index-symbol-div"> +          <xsl:with-param name="scope" select="$scope"/> +          <xsl:with-param name="role" select="$role"/> +          <xsl:with-param name="type" select="$type"/> +          <xsl:sort lang="{$sort.lang}" +              select="k:getIndexGroupSortKey(⟨, +                      k:getIndexGroupKey(⟨, &primary;))"/> +        </xsl:apply-templates> +      </fo:block> +    </xsl:if> + +    <xsl:apply-templates select="$alphabetical" +                         mode="index-div-kimber"> +      <xsl:with-param name="scope" select="$scope"/> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/spaces.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/spaces.xsl new file mode 100644 index 0000000..75fb051 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/spaces.xsl @@ -0,0 +1,273 @@ +<?xml version='1.0' encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: spaces.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** +     XSL-FO specification treats all space characters like ordinary spaces. +     We need to map them to fo:leader with different widths in order to +     simulate desired behaviour. +     ******************************************************************** --> + +<xsl:template match="text()[namespace-uri(..) = '']"> +  <xsl:choose> +    <xsl:when test="$passivetex.extensions != 0"> +      <xsl:call-template name="passivetex.dash.subst"> +        <xsl:with-param name="string"> +	  <xsl:call-template name="space.2000.subst"> +	    <xsl:with-param name="string" select="."/> +	  </xsl:call-template> +	</xsl:with-param> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2000.subst"> +	<xsl:with-param name="string" select="."/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:param name="space.enquad.width">0.5em</xsl:param>   <!-- U+2000 --> +<xsl:param name="space.emquad.width">1em</xsl:param>     <!-- U+2001 --> +<xsl:param name="space.enspace.width">0.5em</xsl:param>  <!-- U+2002 --> +<xsl:param name="space.emspace.width">1em</xsl:param>    <!-- U+2003 --> +<xsl:param name="space.3emspace.width">0.33em</xsl:param><!-- U+2004 --> +<xsl:param name="space.4emspace.width">0.25em</xsl:param><!-- U+2005 --> +<xsl:param name="space.6emspace.width">0.16em</xsl:param><!-- U+2006 --> +<xsl:param name="space.figspace.width"></xsl:param>      <!-- U+2007 --> +<xsl:param name="space.punctspace.width"></xsl:param>    <!-- U+2008 --> +<xsl:param name="space.thinspace.width">0.2em</xsl:param><!-- U+2009 --> +<xsl:param name="space.hairspace.width">0.1em</xsl:param><!-- U+200A --> + +<xsl:template name="space.2000.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.enquad.width != ''"> +      <xsl:call-template name="space.2001.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.enquad.width}"/> +      <xsl:call-template name="space.2000.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2001.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2001.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.emquad.width != ''"> +      <xsl:call-template name="space.2002.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.emquad.width}"/> +      <xsl:call-template name="space.2001.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2002.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2002.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.enspace.width != ''"> +      <xsl:call-template name="space.2003.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.enspace.width}"/> +      <xsl:call-template name="space.2002.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2003.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2003.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.emspace.width != ''"> +      <xsl:call-template name="space.2004.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.emspace.width}"/> +      <xsl:call-template name="space.2003.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2004.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2004.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.3emspace.width != ''"> +      <xsl:call-template name="space.2005.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.3emspace.width}"/> +      <xsl:call-template name="space.2004.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2005.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2005.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.4emspace.width != ''"> +      <xsl:call-template name="space.2006.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.4emspace.width}"/> +      <xsl:call-template name="space.2005.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2006.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2006.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.6emspace.width != ''"> +      <xsl:call-template name="space.2007.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.6emspace.width}"/> +      <xsl:call-template name="space.2006.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2007.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2007.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.figspace.width != ''"> +      <xsl:call-template name="space.2008.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.figspace.width}"/> +      <xsl:call-template name="space.2007.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2008.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2008.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.punctspace.width != ''"> +      <xsl:call-template name="space.2009.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.punctspace.width}"/> +      <xsl:call-template name="space.2008.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.2009.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.2009.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.thinspace.width != ''"> +      <xsl:call-template name="space.200A.subst"> +	<xsl:with-param name="string" select="substring-before($string, ' ')"/> +      </xsl:call-template> +      <fo:leader leader-length="{$space.thinspace.width}"/> +      <xsl:call-template name="space.2009.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="space.200A.subst"> +	<xsl:with-param name="string" select="$string"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="space.200A.subst"> +  <xsl:param name="string"/> + +  <xsl:choose> +    <xsl:when test="contains($string, ' ') and $space.hairspace.width != ''"> +      <xsl:value-of select="substring-before($string, ' ')"/> +      <fo:leader leader-length="{$space.hairspace.width}"/> +      <xsl:call-template name="space.200A.subst"> +	<xsl:with-param name="string" select="substring-after($string, ' ')"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$string"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/synop.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/synop.xsl new file mode 100644 index 0000000..b7f09e0 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/synop.xsl @@ -0,0 +1,967 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY RE "
"> +<!ENTITY nbsp " "> +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: synop.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- synopsis is in verbatim --> + +<!-- ==================================================================== --> + +<xsl:template match="cmdsynopsis"> +  <fo:block xsl:use-attribute-sets="normal.para.spacing"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="cmdsynopsis/command"> +  <xsl:call-template name="inline.monoseq"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="cmdsynopsis/command[1]" priority="2"> +  <xsl:call-template name="inline.monoseq"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="group|arg" name="group-or-arg"> +  <xsl:variable name="choice" select="@choice"/> +  <xsl:variable name="rep" select="@rep"/> +  <xsl:variable name="sepchar"> +    <xsl:choose> +      <xsl:when test="ancestor-or-self::*/@sepchar"> +        <xsl:value-of select="ancestor-or-self::*/@sepchar"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:text> </xsl:text> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:if test="preceding-sibling::*"> +    <xsl:value-of select="$sepchar"/> +  </xsl:if> +  <xsl:choose> +    <xsl:when test="$choice='plain'"> +      <xsl:value-of select="$arg.choice.plain.open.str"/> +    </xsl:when> +    <xsl:when test="$choice='req'"> +      <xsl:value-of select="$arg.choice.req.open.str"/> +    </xsl:when> +    <xsl:when test="$choice='opt'"> +      <xsl:value-of select="$arg.choice.opt.open.str"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$arg.choice.def.open.str"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates/> +  <xsl:choose> +    <xsl:when test="$rep='repeat'"> +      <xsl:value-of select="$arg.rep.repeat.str"/> +    </xsl:when> +    <xsl:when test="$rep='norepeat'"> +      <xsl:value-of select="$arg.rep.norepeat.str"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$arg.rep.def.str"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:choose> +    <xsl:when test="$choice='plain'"> +      <xsl:value-of select="$arg.choice.plain.close.str"/> +    </xsl:when> +    <xsl:when test="$choice='req'"> +      <xsl:value-of select="$arg.choice.req.close.str"/> +    </xsl:when> +    <xsl:when test="$choice='opt'"> +      <xsl:value-of select="$arg.choice.opt.close.str"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$arg.choice.def.close.str"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="group/arg"> +  <xsl:variable name="choice" select="@choice"/> +  <xsl:variable name="rep" select="@rep"/> +  <xsl:if test="preceding-sibling::*"> +    <xsl:value-of select="$arg.or.sep"/> +  </xsl:if> +  <xsl:call-template name="group-or-arg"/> +</xsl:template> + +<xsl:template match="sbr"> +  <fo:block/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="synopfragmentref"> +  <xsl:variable name="target" select="key('id',@linkend)"/> +  <xsl:variable name="snum"> +    <xsl:apply-templates select="$target" mode="synopfragment.number"/> +  </xsl:variable> +  <fo:inline font-style="italic"> +    <fo:basic-link internal-destination="{@linkend}" +                   xsl:use-attribute-sets="xref.properties"> +      <xsl:text>(</xsl:text> +      <xsl:value-of select="$snum"/> +      <xsl:text>)</xsl:text> +    </fo:basic-link> +    <xsl:text> </xsl:text> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<xsl:template match="synopfragment" mode="synopfragment.number"> +  <xsl:number format="1"/> +</xsl:template> + +<xsl:template match="synopfragment"> +  <xsl:variable name="snum"> +    <xsl:apply-templates select="." mode="synopfragment.number"/> +  </xsl:variable> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:block id="{$id}"> +    <xsl:text>(</xsl:text> +    <xsl:value-of select="$snum"/> +    <xsl:text>)</xsl:text> +    <xsl:text> </xsl:text> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="funcsynopsis"> +  <xsl:call-template name="informal.object"/> +</xsl:template> + +<xsl:template match="funcsynopsisinfo"> +  <fo:block space-after.minimum="0.8em" +            space-after.optimum="1em" +            space-after.maximum="1.2em"> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="funcprototype"> +  <fo:block font-family="{$monospace.font.family}" +          space-before.minimum="0.8em" +          space-before.optimum="1em" +          space-before.maximum="1.2em"> +    <xsl:apply-templates/> +    <xsl:if test="$funcsynopsis.style='kr'"> +      <fo:block +          space-before.minimum="0.8em" +          space-before.optimum="1em" +          space-before.maximum="1.2em"> +      <xsl:apply-templates select="./paramdef" mode="kr-funcsynopsis-mode"/> +      </fo:block> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="funcdef"> +  <fo:inline font-family="{$monospace.font.family}"> +    <xsl:apply-templates/> +  </fo:inline> +</xsl:template> + +<xsl:template match="funcdef/function"> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.decoration != 0"> +      <fo:inline font-weight="bold"> +        <xsl:apply-templates/> +      </fo:inline> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="void"> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.style='ansi'"> +      <xsl:text>(void);</xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>();</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="varargs"> +  <xsl:text>(...);</xsl:text> +</xsl:template> + +<xsl:template match="paramdef"> +  <xsl:variable name="paramnum"> +    <xsl:number count="paramdef" format="1"/> +  </xsl:variable> +  <xsl:if test="$paramnum=1">(</xsl:if> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.style='ansi'"> +      <xsl:apply-templates/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="./parameter"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:choose> +    <xsl:when test="following-sibling::paramdef"> +      <xsl:text>, </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text>);</xsl:text> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="paramdef/parameter"> +  <xsl:choose> +    <xsl:when test="$funcsynopsis.decoration != 0"> +      <xsl:call-template name="inline.italicseq"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:if test="following-sibling::parameter"> +    <xsl:text>, </xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="paramdef" mode="kr-funcsynopsis-mode"> +  <fo:block> +    <xsl:apply-templates/> +    <xsl:text>;</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="funcparams"> +  <xsl:text>(</xsl:text> +  <xsl:apply-templates/> +  <xsl:text>)</xsl:text> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:variable name="default-classsynopsis-language">java</xsl:variable> + +<xsl:template match="classsynopsis +                     |fieldsynopsis +                     |methodsynopsis +                     |constructorsynopsis +                     |destructorsynopsis"> +  <xsl:param name="language"> +    <xsl:choose> +      <xsl:when test="@language"> +	<xsl:value-of select="@language"/> +      </xsl:when> +      <xsl:otherwise> +	<xsl:value-of select="$default-classsynopsis-language"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:param> + +  <!-- +  <xsl:message>process <xsl:value-of select="local-name(.)"/> in <xsl:value-of select="$language"/></xsl:message> +  --> + +  <xsl:choose> +    <xsl:when test="$language='java' or $language='Java'"> +      <xsl:apply-templates select="." mode="java"/> +    </xsl:when> +    <xsl:when test="$language='perl' or $language='Perl'"> +      <xsl:apply-templates select="." mode="perl"/> +    </xsl:when> +    <xsl:when test="$language='idl' or $language='IDL'"> +      <xsl:apply-templates select="." mode="idl"/> +    </xsl:when> +    <xsl:when test="$language='cpp' or $language='c++' or $language='C++'"> +      <xsl:apply-templates select="." mode="cpp"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message> +	<xsl:text>Unrecognized language on </xsl:text> +        <xsl:value-of select="local-name(.)"/> +        <xsl:text>: </xsl:text> +	<xsl:value-of select="$language"/> +      </xsl:message> +      <xsl:apply-templates select="."> +	<xsl:with-param name="language" +	  select="$default-classsynopsis-language"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="synop-break"> +  <xsl:if test="parent::classsynopsis +                or (following-sibling::fieldsynopsis +                    |following-sibling::methodsynopsis +                    |following-sibling::constructorsynopsis +                    |following-sibling::destructorsynopsis)"> +    <fo:inline>&RE;</fo:inline> +  </xsl:if> +</xsl:template> + +<!-- ===== Java ======================================================== --> + +<xsl:template match="classsynopsis" mode="java"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:apply-templates select="ooclass[1]" mode="java"/> +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text> extends</xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/> +      <xsl:if test="oointerface|ooexception"> +        <xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="oointerface"> +      <xsl:text>implements</xsl:text> +      <xsl:apply-templates select="oointerface" mode="java"/> +      <xsl:if test="ooexception"> +	<xsl:text>&RE;    </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> {&RE;</xsl:text> +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="java"/> +    <xsl:text>}</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="java"> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="java"> +  <xsl:choose> +    <xsl:when test="preceding-sibling::*"> +      <xsl:text>, </xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:text> </xsl:text> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="java"> +  <xsl:apply-templates mode="java"/> +  <xsl:if test="following-sibling::*"> +    <xsl:text> </xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="java"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="interfacename" mode="java"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="java"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="java"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="java"/> +    <xsl:text>;</xsl:text> +    <xsl:call-template name="synop-break"/> +  </fo:block> +</xsl:template> + +<xsl:template match="type" mode="java"> +  <xsl:apply-templates mode="java"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="java"> +  <xsl:apply-templates mode="java"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="java"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="void" mode="java"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="java"> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="methodparam" mode="java"> +  <xsl:param name="indent">0</xsl:param> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>,&RE;</xsl:text> +    <xsl:if test="$indent > 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> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="parameter" mode="java"> +  <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template mode="java" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="decl"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates select="$start-modifiers" mode="java"/> + +    <!-- type --> +    <xsl:if test="local-name($notmod[1]) != 'methodname'"> +      <xsl:apply-templates select="$notmod[1]" mode="java"/> +    </xsl:if> + +    <xsl:apply-templates select="methodname" mode="java"/> +  </xsl:variable> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:copy-of select="$decl"/> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates select="methodparam" mode="java"> +      <xsl:with-param name="indent" select="string-length($decl)"/> +    </xsl:apply-templates> +    <xsl:text>)</xsl:text> +    <xsl:if test="exceptionname"> +      <xsl:text>&RE;    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> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== C++ ========================================================= --> + +<xsl:template match="classsynopsis" mode="cpp"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:apply-templates select="ooclass[1]" mode="cpp"/> +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text>: </xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/> +      <xsl:if test="oointerface|ooexception"> +	<xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="oointerface"> +      <xsl:text> implements</xsl:text> +      <xsl:apply-templates select="oointerface" mode="cpp"/> +      <xsl:if test="ooexception"> +	<xsl:text>&RE;    </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> {&RE;</xsl:text> +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="cpp"/> +    <xsl:text>}</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="cpp"> +  <xsl:if test="preceding-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +    <xsl:if test="following-sibling::*"> +      <xsl:text> </xsl:text> +    </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="cpp"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="interfacename" mode="cpp"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="cpp"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="cpp"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="cpp"/> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="cpp"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="void" mode="cpp"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="methodparam" mode="cpp"> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="parameter" mode="cpp"> +  <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template mode="cpp" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates select="$start-modifiers" mode="cpp"/> + +    <!-- type --> +    <xsl:if test="local-name($notmod[1]) != 'methodname'"> +      <xsl:apply-templates select="$notmod[1]" mode="cpp"/> +    </xsl:if> + +    <xsl:apply-templates select="methodname" mode="cpp"/> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates select="methodparam" mode="cpp"/> +    <xsl:text>)</xsl:text> +    <xsl:if test="exceptionname"> +      <xsl:text>&RE;    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> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== IDL ========================================================= --> + +<xsl:template match="classsynopsis" mode="idl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>interface </xsl:text> +    <xsl:apply-templates select="ooclass[1]" mode="idl"/> +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text>: </xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/> +      <xsl:if test="oointerface|ooexception"> +	<xsl:text>&RE;    </xsl:text> +      </xsl:if> +    </xsl:if> +    <xsl:if test="oointerface"> +      <xsl:text> implements</xsl:text> +      <xsl:apply-templates select="oointerface" mode="idl"/> +      <xsl:if test="ooexception"> +	<xsl:text>&RE;    </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> {&RE;</xsl:text> +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="idl"/> +    <xsl:text>}</xsl:text> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="idl"> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="idl"> +  <xsl:if test="preceding-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="idl"> +  <xsl:apply-templates mode="idl"/> +    <xsl:if test="following-sibling::*"> +      <xsl:text> </xsl:text> +    </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="idl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="interfacename" mode="idl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="idl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="idl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="idl"/> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="idl"> +  <xsl:apply-templates mode="idl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="idl"> +  <xsl:apply-templates mode="idl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="idl"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="void" mode="idl"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="idl"> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="methodparam" mode="idl"> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="parameter" mode="idl"> +  <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template mode="idl" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates select="$start-modifiers" mode="idl"/> + +    <!-- type --> +    <xsl:if test="local-name($notmod[1]) != 'methodname'"> +      <xsl:apply-templates select="$notmod[1]" mode="idl"/> +    </xsl:if> + +    <xsl:apply-templates select="methodname" mode="idl"/> +    <xsl:text>(</xsl:text> +    <xsl:apply-templates select="methodparam" mode="idl"/> +    <xsl:text>)</xsl:text> +    <xsl:if test="exceptionname"> +      <xsl:text>&RE;    raises(</xsl:text> +      <xsl:apply-templates select="exceptionname" mode="idl"/> +      <xsl:text>)</xsl:text> +    </xsl:if> +    <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="$end-modifiers" mode="idl"/> +    </xsl:if> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== Perl ======================================================== --> + +<xsl:template match="classsynopsis" mode="perl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>package </xsl:text> +    <xsl:apply-templates select="ooclass[1]" mode="perl"/> +    <xsl:text>;&RE;</xsl:text> + +    <xsl:if test="ooclass[preceding-sibling::*]"> +      <xsl:text>@ISA = (</xsl:text> +      <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/> +      <xsl:text>);&RE;</xsl:text> +    </xsl:if> + +    <xsl:apply-templates select="constructorsynopsis +                                 |destructorsynopsis +                                 |fieldsynopsis +                                 |methodsynopsis +                                 |classsynopsisinfo" mode="perl"/> +  </fo:block> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="perl"> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="perl"> +  <xsl:if test="preceding-sibling::*"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="modifier|package" mode="perl"> +  <xsl:apply-templates mode="perl"/> +    <xsl:if test="following-sibling::*"> +      <xsl:text> </xsl:text> +    </xsl:if> +</xsl:template> + +<xsl:template match="classname" mode="perl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="interfacename" mode="perl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="exceptionname" mode="perl"> +  <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="perl"> +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>  </xsl:text> +    <xsl:apply-templates mode="perl"/> +    <xsl:text>;</xsl:text> +  </fo:block> +  <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="perl"> +  <xsl:apply-templates mode="perl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="varname" mode="perl"> +  <xsl:apply-templates mode="perl"/> +  <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="initializer" mode="perl"> +  <xsl:text>= </xsl:text> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="void" mode="perl"> +  <xsl:text>void </xsl:text> +</xsl:template> + +<xsl:template match="methodname" mode="perl"> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="methodparam" mode="perl"> +  <xsl:if test="preceding-sibling::methodparam"> +    <xsl:text>, </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="parameter" mode="perl"> +  <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template mode="perl" +  match="constructorsynopsis|destructorsynopsis|methodsynopsis"> +  <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> +  <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> +  <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + +  <fo:block wrap-option='no-wrap' +            white-space-collapse='false' +            linefeed-treatment="preserve" +            xsl:use-attribute-sets="monospace.verbatim.properties"> +    <xsl:text>sub </xsl:text> + +    <xsl:apply-templates select="methodname" mode="perl"/> +    <xsl:text> { ... };</xsl:text> +    <xsl:call-template name="synop-break"/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- * 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/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/table.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/table.xsl new file mode 100644 index 0000000..8462765 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/table.xsl @@ -0,0 +1,1535 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                xmlns:stbl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Table" +                xmlns:xtbl="com.nwalsh.xalan.Table" +                xmlns:lxslt="http://xml.apache.org/xslt" +                xmlns:ptbl="http://nwalsh.com/xslt/ext/xsltproc/python/Table" +                exclude-result-prefixes="doc stbl xtbl lxslt ptbl" +                version='1.0'> + +<xsl:include href="../common/table.xsl"/> + +<!-- ******************************************************************** +     $Id: table.xsl 8369 2007-09-09 08:55:14Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<doc:reference xmlns="" xml:id="table-templates"> +  <?dbhtml dir="fo"?> +  <info> +    <title>Formatting Object Table Reference</title> +    <releaseinfo role="meta"> +      $Id: table.xsl 8369 2007-09-09 08:55:14Z manuel $ +    </releaseinfo> +  </info> +  <partintro xml:id="partintro"> +    <title>Introduction</title> +    <para>This is technical reference documentation for the FO +      table-processing templates in the DocBook XSL Stylesheets.</para> +    <para>This is not intended to be user documentation.  It is +      provided for developers writing customization layers for the +      stylesheets.</para> +  </partintro> +</doc:reference> + +<!-- ==================================================================== --> + +<lxslt:component prefix="xtbl" +                 functions="adjustColumnWidths"/> + +<!-- ==================================================================== --> + +<xsl:template name="make.table.content"> +  <xsl:choose> +    <xsl:when test="tgroup|mediaobject|graphic"> +      <xsl:call-template name="calsTable"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="." mode="htmlTable"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="calsTable"> + +  <xsl:variable name="keep.together"> +    <xsl:call-template name="pi.dbfo_keep-together"/> +  </xsl:variable> + +  <xsl:for-each select="tgroup"> + +    <fo:table xsl:use-attribute-sets="table.table.properties"> +      <xsl:if test="$keep.together != ''"> +        <xsl:attribute name="keep-together.within-column"> +          <xsl:value-of select="$keep.together"/> +        </xsl:attribute> +      </xsl:if> +      <xsl:call-template name="table.frame"/> +      <xsl:if test="following-sibling::tgroup"> +        <xsl:attribute name="border-bottom-width">0pt</xsl:attribute> +        <xsl:attribute name="border-bottom-style">none</xsl:attribute> +        <xsl:attribute name="padding-bottom">0pt</xsl:attribute> +        <xsl:attribute name="margin-bottom">0pt</xsl:attribute> +        <xsl:attribute name="space-after">0pt</xsl:attribute> +        <xsl:attribute name="space-after.minimum">0pt</xsl:attribute> +        <xsl:attribute name="space-after.optimum">0pt</xsl:attribute> +        <xsl:attribute name="space-after.maximum">0pt</xsl:attribute> +      </xsl:if> +      <xsl:if test="preceding-sibling::tgroup"> +        <xsl:attribute name="border-top-width">0pt</xsl:attribute> +        <xsl:attribute name="border-top-style">none</xsl:attribute> +        <xsl:attribute name="padding-top">0pt</xsl:attribute> +        <xsl:attribute name="margin-top">0pt</xsl:attribute> +        <xsl:attribute name="space-before">0pt</xsl:attribute> +        <xsl:attribute name="space-before.minimum">0pt</xsl:attribute> +        <xsl:attribute name="space-before.optimum">0pt</xsl:attribute> +        <xsl:attribute name="space-before.maximum">0pt</xsl:attribute> +      </xsl:if> +      <xsl:apply-templates select="."/> +    </fo:table> +  </xsl:for-each> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- Placeholder template enables wrapping a fo:table in +     another table for purposes of layout or applying +     extensions such as XEP table-omit-initial-header to +     create "continued" titles on page breaks. --> +<xsl:template name="table.layout"> +  <xsl:param name="table.content" select="NOTANODE"/> + +  <xsl:copy-of select="$table.content"/> +</xsl:template> + +<xsl:template name="table.block"> +  <xsl:param name="table.layout" select="NOTANODE"/> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="param.placement" +                select="substring-after(normalize-space( +                   $formal.title.placement), concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="self::table"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="table.properties"> +        <xsl:if test="$placement = 'before'"> +          <xsl:call-template name="formal.object.heading"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </xsl:if> +        <xsl:copy-of select="$table.layout"/> +        <xsl:call-template name="table.footnote.block"/> +        <xsl:if test="$placement != 'before'"> +          <xsl:call-template name="formal.object.heading"> +            <xsl:with-param name="placement" select="$placement"/> +          </xsl:call-template> +        </xsl:if> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="informaltable.properties"> +        <xsl:copy-of select="$table.layout"/> +        <xsl:call-template name="table.footnote.block"/> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> + + +</xsl:template> + +<!-- Output a table's footnotes in a block --> +<xsl:template name="table.footnote.block"> +  <xsl:if test=".//footnote"> +    <fo:block keep-with-previous.within-column="always"> +      <xsl:apply-templates select=".//footnote" mode="table.footnote.mode"/> +    </fo:block> +  </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="table.container"> +  <xsl:param name="table.block"/> +  <xsl:choose> +    <xsl:when test="@orient='land' and  +                    $fop.extensions = 0 and  +                    $passivetex.extensions = 0" > +      <fo:block-container reference-orientation="90" +            padding="6pt" +            xsl:use-attribute-sets="list.block.spacing"> +        <xsl:attribute name="width"> +          <xsl:call-template name="table.width"/> +        </xsl:attribute> +        <fo:block start-indent="0pt" end-indent="0pt"> +          <xsl:copy-of select="$table.block"/> +        </fo:block> +      </fo:block-container> +    </xsl:when> +    <xsl:when test="@pgwide = 1"> +      <fo:block xsl:use-attribute-sets="pgwide.properties"> +        <xsl:copy-of select="$table.block"/> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$table.block"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="empty.table.cell"> +  <xsl:param name="colnum" select="0"/> + +  <xsl:variable name="rowsep"> +    <xsl:choose> +      <!-- If this is the last row, rowsep never applies. --> +      <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) >= ancestor::tgroup/@cols">0</xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="inherited.table.attribute"> +          <xsl:with-param name="entry" select="NOT-AN-ELEMENT-NAME"/> +          <xsl:with-param name="row" select="ancestor-or-self::row[1]"/> +          <xsl:with-param name="colnum" select="$colnum"/> +          <xsl:with-param name="attribute" select="'colsep'"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:table-cell text-align="center" +                 display-align="center" +                 xsl:use-attribute-sets="table.cell.padding"> +    <xsl:if test="$xep.extensions != 0"> +      <!-- Suggested by RenderX to workaround a bug in their implementation --> +      <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +    </xsl:if> +    <xsl:if test="$rowsep > 0"> +      <xsl:call-template name="border"> +        <xsl:with-param name="side" select="'bottom'"/> +      </xsl:call-template> +    </xsl:if> + +    <xsl:if test="$colsep > 0 and number($colnum) < ancestor::tgroup/@cols"> +      <xsl:call-template name="border"> +        <xsl:with-param name="side" select="'right'"/> +      </xsl:call-template> +    </xsl:if> + +    <!-- fo:table-cell should not be empty --> +    <fo:block/> +  </fo:table-cell> +</xsl:template> + +<!-- ==================================================================== --> +<xsl:template name="table.frame"> +  <xsl:variable name="frame"> +    <xsl:choose> +      <xsl:when test="../@frame"> +        <xsl:value-of select="../@frame"/> +      </xsl:when> +      <xsl:when test="$default.table.frame != ''"> +        <xsl:value-of select="$default.table.frame"/> +      </xsl:when> +      <xsl:otherwise>all</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$frame='all'"> +      <xsl:attribute name="border-left-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-left-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-left-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +    </xsl:when> +    <xsl:when test="$frame='bottom'"> +      <xsl:attribute name="border-left-style">none</xsl:attribute> +      <xsl:attribute name="border-right-style">none</xsl:attribute> +      <xsl:attribute name="border-top-style">none</xsl:attribute> +      <xsl:attribute name="border-bottom-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +    </xsl:when> +    <xsl:when test="$frame='sides'"> +      <xsl:attribute name="border-left-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-style">none</xsl:attribute> +      <xsl:attribute name="border-bottom-style">none</xsl:attribute> +      <xsl:attribute name="border-left-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-left-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +      <xsl:attribute name="border-right-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +    </xsl:when> +    <xsl:when test="$frame='top'"> +      <xsl:attribute name="border-left-style">none</xsl:attribute> +      <xsl:attribute name="border-right-style">none</xsl:attribute> +      <xsl:attribute name="border-top-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-style">none</xsl:attribute> +      <xsl:attribute name="border-top-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +    </xsl:when> +    <xsl:when test="$frame='topbot'"> +      <xsl:attribute name="border-left-style">none</xsl:attribute> +      <xsl:attribute name="border-right-style">none</xsl:attribute> +      <xsl:attribute name="border-top-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-style"> +        <xsl:value-of select="$table.frame.border.style"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-width"> +        <xsl:value-of select="$table.frame.border.thickness"/> +      </xsl:attribute> +      <xsl:attribute name="border-top-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +      <xsl:attribute name="border-bottom-color"> +        <xsl:value-of select="$table.frame.border.color"/> +      </xsl:attribute> +    </xsl:when> +    <xsl:when test="$frame='none'"> +      <xsl:attribute name="border-left-style">none</xsl:attribute> +      <xsl:attribute name="border-right-style">none</xsl:attribute> +      <xsl:attribute name="border-top-style">none</xsl:attribute> +      <xsl:attribute name="border-bottom-style">none</xsl:attribute> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message> +        <xsl:text>Impossible frame on table: </xsl:text> +        <xsl:value-of select="$frame"/> +      </xsl:message> +      <xsl:attribute name="border-left-style">none</xsl:attribute> +      <xsl:attribute name="border-right-style">none</xsl:attribute> +      <xsl:attribute name="border-top-style">none</xsl:attribute> +      <xsl:attribute name="border-bottom-style">none</xsl:attribute> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="border"> +  <xsl:param name="side" select="'left'"/> + +  <xsl:attribute name="border-{$side}-width"> +    <xsl:value-of select="$table.cell.border.thickness"/> +  </xsl:attribute> +  <xsl:attribute name="border-{$side}-style"> +    <xsl:value-of select="$table.cell.border.style"/> +  </xsl:attribute> +  <xsl:attribute name="border-{$side}-color"> +    <xsl:value-of select="$table.cell.border.color"/> +  </xsl:attribute> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="tgroup" name="tgroup"> +  <xsl:if test="not(@cols) or @cols = '' or string(number(@cols)) = 'NaN'"> +    <xsl:message terminate="yes"> +      <xsl:text>Error: CALS tables must specify the number of columns.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:variable name="table.width"> +    <xsl:call-template name="table.width"/> +  </xsl:variable> + +  <xsl:variable name="colspecs"> +    <xsl:choose> +      <xsl:when test="$use.extensions != 0 +                      and $tablecolumns.extension != 0"> +        <xsl:call-template name="generate.colgroup.raw"> +          <xsl:with-param name="cols" select="@cols"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="generate.colgroup"> +          <xsl:with-param name="cols" select="@cols"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="prop-columns" +                select=".//colspec[contains(@colwidth, '*')]"/> +  <xsl:if test="count($prop-columns) != 0 or +                $fop.extensions != 0 or +                $fop1.extensions != 0 or +                $passivetex.extensions != 0"> +    <xsl:attribute name="table-layout">fixed</xsl:attribute> +  </xsl:if> +  +    <xsl:attribute name="width"> +      <xsl:value-of select="$table.width"/> +    </xsl:attribute> +  +  <xsl:choose> +    <xsl:when test="$use.extensions != 0 +                    and $tablecolumns.extension != 0"> +      <xsl:choose> +        <xsl:when test="function-available('stbl:adjustColumnWidths')"> +          <xsl:copy-of select="stbl:adjustColumnWidths($colspecs)"/> +        </xsl:when> +        <xsl:when test="function-available('xtbl:adjustColumnWidths')"> +          <xsl:copy-of select="xtbl:adjustColumnWidths($colspecs)"/> +        </xsl:when> +        <xsl:when test="function-available('ptbl:adjustColumnWidths')"> +          <xsl:copy-of select="ptbl:adjustColumnWidths($colspecs)"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message terminate="yes"> +            <xsl:text>No adjustColumnWidths function available.</xsl:text> +          </xsl:message> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$colspecs"/> +    </xsl:otherwise> +  </xsl:choose> + +  <xsl:apply-templates select="thead"/> +  <xsl:apply-templates select="tfoot"/> +  <xsl:apply-templates select="tbody"/> +</xsl:template> + +<xsl:template match="colspec"></xsl:template> + +<xsl:template name="table.width"> + +  <xsl:variable name="numcols"> +    <xsl:call-template name="widest-html-row"> +      <xsl:with-param name="rows" select=".//tr"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="explicit.table.width"> +    <xsl:choose> +      <xsl:when test="self::entrytbl"> +        <xsl:call-template name="pi.dbfo_table-width"/> +      </xsl:when> +      <xsl:when test="self::table or self::informaltable"> +        <xsl:call-template name="pi.dbfo_table-width"/> +      </xsl:when> +      <xsl:otherwise> +        <!-- * no dbfo@table-width PI as a child of this table, so check --> +        <!-- * the parent of this table to see if the table has any --> +        <!-- * sibling dbfo@table-width PIs (FIXME: 2007-07 MikeSmith: we --> +        <!-- * should really instead be checking here just to see if the --> +        <!-- * first preceding sibling of this table is a --> +        <!-- * dbfo@table-width PI) --> +        <xsl:call-template name="pi.dbfo_table-width"> +          <xsl:with-param name="node" select=".."/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="column.sum"> +    <xsl:choose> +      <!-- CALS table --> +      <xsl:when test="@cols"> +        <xsl:if test="count(colspec) = @cols"> +          <xsl:for-each select="colspec"> +            <xsl:if test="position() != 1"> +              <xsl:text> + </xsl:text> +            </xsl:if> +            <xsl:choose> +              <xsl:when test="not(@colwidth)">NOWIDTH</xsl:when> +              <xsl:when test="contains(@colwidth, '*')">NOWIDTH</xsl:when> +              <xsl:otherwise> +                <xsl:value-of select="@colwidth"/> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:for-each> +        </xsl:if> +      </xsl:when> +      <xsl:otherwise> +        <!-- HTML table --> +        <xsl:if test="count(col|colgroup/col) = $numcols"> +          <xsl:for-each select="col|colgroup/col"> +            <xsl:if test="position() != 1"> +              <xsl:text> + </xsl:text> +            </xsl:if> +            <xsl:choose> +              <xsl:when test="not(@width)">NOWIDTH</xsl:when> +              <xsl:when test="contains(@width, '%')">NOWIDTH</xsl:when> +              <xsl:otherwise> +                <xsl:value-of select="@width"/> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:for-each> +        </xsl:if> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="column.sum.width"> +    <xsl:if test="not(contains($column.sum, 'NOWIDTH'))"> +      <xsl:value-of select="$column.sum"/> +    </xsl:if> +  </xsl:variable> + +  <xsl:variable name="prop-columns" +                select=".//colspec[contains(@colwidth, '*')]"/> + +  <xsl:variable name="table.width"> +    <xsl:choose> +      <xsl:when test="$explicit.table.width != ''"> +        <xsl:value-of select="$explicit.table.width"/> +      </xsl:when> +      <xsl:when test="$column.sum.width != ''"> +        <xsl:value-of select="$column.sum.width"/> +      </xsl:when> +      <xsl:when test="$default.table.width = ''"> +        <xsl:choose> +          <!-- These processors don't support table-layout="auto" --> +          <xsl:when test="$fop.extensions != 0 or +                          $fop1.extensions != 0 or +                          $passivetex.extensions != 0"> +            <xsl:text>100%</xsl:text> +          </xsl:when> +          <!-- Proportional columns imply 100% width --> +          <xsl:when test="count($prop-columns) != 0"> +            <xsl:text>100%</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:text>auto</xsl:text> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$default.table.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> +  <xsl:value-of select="$table.width"/> + +</xsl:template> + +<xsl:template match="spanspec"></xsl:template> + +<xsl:template match="thead"> +  <xsl:variable name="tgroup" select="parent::*"/> + +  <fo:table-header start-indent="0pt" end-indent="0pt"> +    <xsl: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> +  </fo:table-header> +</xsl:template> + +<xsl:template match="tfoot"> +  <xsl:variable name="tgroup" select="parent::*"/> + +  <fo:table-footer start-indent="0pt" end-indent="0pt"> +    <xsl: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> + +  </fo:table-footer> +</xsl:template> + +<xsl:template match="tbody"> +  <xsl:variable name="tgroup" select="parent::*"/> + +  <fo:table-body start-indent="0pt" end-indent="0pt"> +    <xsl: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> +  </fo:table-body> +</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> + +      <fo:table-row> +        <xsl:comment> This row intentionally left blank </xsl:comment> +        <fo:table-cell><fo:block/></fo:table-cell> +      </fo:table-row> + +      <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"/> + +  <fo:table-row> +    <xsl:call-template name="table.row.properties"/> +    <xsl:call-template name="anchor"/> + +    <xsl:apply-templates select="(entry|entrytbl)[1]"> +      <xsl:with-param name="spans" select="$spans"/> +    </xsl:apply-templates> +  </fo:table-row> + +  <xsl:if test="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> + +<!-- customize this template to add row properties --> +<xsl:template name="table.row.properties"> +  <xsl:variable name="bgcolor"> +    <xsl:call-template name="pi.dbfo_bgcolor"/> +  </xsl:variable> +  <xsl:if test="$bgcolor != ''"> +    <xsl:attribute name="background-color"> +      <xsl:value-of select="$bgcolor"/> +    </xsl:attribute> +  </xsl:if> + +  <!-- Keep header row with next row --> +  <xsl:if test="ancestor::thead"> +    <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +  </xsl:if> + +</xsl:template> + +<xsl:template match="entry|entrytbl" name="entry"> +  <xsl:param name="col" select="1"/> +  <xsl:param name="spans"/> + +  <xsl:variable name="row" select="parent::row"/> +  <xsl:variable name="group" select="$row/parent::*[1]"/> +  <xsl:variable name="frame" select="ancestor::tgroup/parent::*/@frame"/> + +  <xsl:variable name="empty.cell" select="count(node()) = 0"/> + +  <xsl:variable name="named.colnum"> +    <xsl:call-template name="entry.colnum"/> +  </xsl:variable> + +  <xsl:variable name="entry.colnum"> +    <xsl:choose> +      <xsl:when test="$named.colnum > 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="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> +      <!-- Check for morerows too --> +      <xsl:when test="(@morerows and count(ancestor-or-self::row[1]/ +                       following-sibling::row) = @morerows ) +                      and not (ancestor-or-self::thead/following-sibling::tbody +                       or ancestor-or-self::tbody/preceding-sibling::tfoot)"> +        <xsl:value-of select="0"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="inherited.table.attribute"> +          <xsl:with-param name="entry" select="."/> +          <xsl:with-param name="colnum" select="$entry.colnum"/> +          <xsl:with-param name="attribute" select="'rowsep'"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +<!-- +  <xsl:message><xsl:value-of select="."/>: <xsl:value-of select="$rowsep"/></xsl:message> +--> + +  <xsl:variable name="colsep"> +    <xsl:choose> +      <!-- If this is the last column, colsep never applies. --> +      <xsl:when test="$following.spans = ''">0</xsl:when> +      <xsl:otherwise> +        <xsl:call-template name="inherited.table.attribute"> +          <xsl:with-param name="entry" select="."/> +          <xsl:with-param name="colnum" select="$entry.colnum"/> +          <xsl:with-param name="attribute" select="'colsep'"/> +        </xsl:call-template> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="valign"> +    <xsl:call-template name="inherited.table.attribute"> +      <xsl:with-param name="entry" select="."/> +      <xsl:with-param name="colnum" select="$entry.colnum"/> +      <xsl:with-param name="attribute" select="'valign'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="align"> +    <xsl:call-template name="inherited.table.attribute"> +      <xsl:with-param name="entry" select="."/> +      <xsl:with-param name="colnum" select="$entry.colnum"/> +      <xsl:with-param name="attribute" select="'align'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="char"> +    <xsl:call-template name="inherited.table.attribute"> +      <xsl:with-param name="entry" select="."/> +      <xsl:with-param name="colnum" select="$entry.colnum"/> +      <xsl:with-param name="attribute" select="'char'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="charoff"> +    <xsl:call-template name="inherited.table.attribute"> +      <xsl:with-param name="entry" select="."/> +      <xsl:with-param name="colnum" select="$entry.colnum"/> +      <xsl:with-param name="attribute" select="'charoff'"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$spans != '' and not(starts-with($spans,'0:'))"> +      <xsl:call-template name="entry"> +        <xsl:with-param name="col" select="$col+1"/> +        <xsl:with-param name="spans" select="substring-after($spans,':')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:when test="number($entry.colnum) > $col"> +      <xsl:call-template name="empty.table.cell"> +        <xsl:with-param name="colnum" select="$col"/> +      </xsl:call-template> +      <xsl:call-template name="entry"> +        <xsl:with-param name="col" select="$col+1"/> +        <xsl:with-param name="spans" select="substring-after($spans,':')"/> +      </xsl:call-template> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:variable name="cell.content"> +        <fo:block> +          <xsl:call-template name="table.cell.block.properties"/> + +          <!-- are we missing any indexterms? --> +          <xsl:if test="not(preceding-sibling::entry) +                        and not(parent::row/preceding-sibling::row)"> +            <!-- this is the first entry of the first row --> +            <xsl:if test="ancestor::thead or +                          (ancestor::tbody +                           and not(ancestor::tbody/preceding-sibling::thead +                                   or ancestor::tbody/preceding-sibling::tbody))"> +              <!-- of the thead or the first tbody --> +              <xsl:apply-templates select="ancestor::tgroup/preceding-sibling::indexterm"/> +            </xsl:if> +          </xsl:if> + +          <!-- +          <xsl:text>(</xsl:text> +          <xsl:value-of select="$rowsep"/> +          <xsl:text>,</xsl:text> +          <xsl:value-of select="$colsep"/> +          <xsl:text>)</xsl:text> +          --> +          <xsl:choose> +            <xsl:when test="$empty.cell"> +              <xsl:text> </xsl:text> +            </xsl:when> +            <xsl:when test="self::entrytbl"> +              <xsl:variable name="prop-columns" +                            select=".//colspec[contains(@colwidth, '*')]"/> +              <fo:table xsl:use-attribute-sets="table.table.properties"> +                <xsl:if test="count($prop-columns) != 0"> +                  <xsl:attribute name="table-layout">fixed</xsl:attribute> +                </xsl:if> +                <xsl:call-template name="tgroup"/> +              </fo:table> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates/> +            </xsl:otherwise> +          </xsl:choose> +        </fo:block> +      </xsl:variable> + +      <xsl:variable name="cell-orientation"> +        <xsl:call-template name="pi.dbfo_orientation"> +          <xsl:with-param name="node" select="ancestor-or-self::entry"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="row-orientation"> +        <xsl:call-template name="pi.dbfo_orientation"> +          <xsl:with-param name="node" select="ancestor-or-self::row"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="cell-width"> +        <xsl:call-template name="pi.dbfo_rotated-width"> +          <xsl:with-param name="node" select="ancestor-or-self::entry"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="row-width"> +        <xsl:call-template name="pi.dbfo_rotated-width"> +          <xsl:with-param name="node" select="ancestor-or-self::row"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="orientation"> +        <xsl:choose> +          <xsl:when test="$cell-orientation != ''"> +            <xsl:value-of select="$cell-orientation"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$row-orientation"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="rotated-width"> +        <xsl:choose> +          <xsl:when test="$cell-width != ''"> +            <xsl:value-of select="$cell-width"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$row-width"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="bgcolor"> +        <xsl:call-template name="pi.dbfo_bgcolor"> +          <xsl:with-param name="node" select="ancestor-or-self::entry"/> +        </xsl:call-template> +      </xsl:variable> + +      <fo:table-cell xsl:use-attribute-sets="table.cell.padding"> +        <xsl:call-template name="table.cell.properties"> +          <xsl:with-param name="bgcolor.pi" select="$bgcolor"/> +          <xsl:with-param name="rowsep.inherit" select="$rowsep"/> +          <xsl:with-param name="colsep.inherit" select="$colsep"/> +          <xsl:with-param name="col" select="$col"/> +          <xsl:with-param name="valign.inherit" select="$valign"/> +          <xsl:with-param name="align.inherit" select="$align"/> +          <xsl:with-param name="char.inherit" select="$char"/> +        </xsl:call-template> + +        <xsl:call-template name="anchor"/> + +        <xsl:if test="@morerows"> +          <xsl:attribute name="number-rows-spanned"> +            <xsl:value-of select="@morerows+1"/> +          </xsl:attribute> +        </xsl:if> + +        <xsl:if test="$entry.colspan > 1"> +          <xsl:attribute name="number-columns-spanned"> +            <xsl:value-of select="$entry.colspan"/> +          </xsl:attribute> +        </xsl:if> + +<!-- +        <xsl:if test="@charoff"> +          <xsl:attribute name="charoff"> +            <xsl:value-of select="@charoff"/> +          </xsl:attribute> +        </xsl:if> +--> + +        <xsl:choose> +          <xsl:when test="$fop.extensions = 0 and $passivetex.extensions = 0 +                          and $orientation != ''"> +            <fo:block-container reference-orientation="{$orientation}"> +              <xsl:if test="$rotated-width != ''"> +                <xsl:attribute name="width"> +                  <xsl:value-of select="$rotated-width"/> +                </xsl:attribute> +              </xsl:if> +              <xsl:copy-of select="$cell.content"/> +            </fo:block-container> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$cell.content"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:table-cell> + +      <xsl:choose> +        <xsl:when test="following-sibling::entry|following-sibling::entrytbl"> +          <xsl:apply-templates select="(following-sibling::entry +                                       |following-sibling::entrytbl)[1]"> +            <xsl:with-param name="col" select="$col+$entry.colspan"/> +            <xsl:with-param name="spans" select="$following.spans"/> +          </xsl:apply-templates> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="finaltd"> +            <xsl:with-param name="spans" select="$following.spans"/> +            <xsl:with-param name="col" select="$col+$entry.colspan"/> +          </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- Expand this template to add properties to any fo:table-cell --> +<xsl:template name="table.cell.properties"> +  <xsl:param name="bgcolor.pi" select="''"/> +  <xsl:param name="rowsep.inherit" select="1"/> +  <xsl:param name="colsep.inherit" select="1"/> +  <xsl:param name="col" select="1"/> +  <xsl:param name="valign.inherit" select="''"/> +  <xsl:param name="align.inherit" select="''"/> +  <xsl:param name="char.inherit" select="''"/> + +  <xsl:choose> +    <xsl:when test="ancestor::tgroup"> +      <xsl:if test="$bgcolor.pi != ''"> +        <xsl:attribute name="background-color"> +          <xsl:value-of select="$bgcolor.pi"/> +        </xsl:attribute> +      </xsl:if> + +      <xsl:if test="$rowsep.inherit > 0"> +        <xsl:call-template name="border"> +          <xsl:with-param name="side" select="'bottom'"/> +        </xsl:call-template> +      </xsl:if> + +      <xsl:if test="$colsep.inherit > 0 and  +                      $col < ancestor::tgroup/@cols"> +        <xsl:call-template name="border"> +          <xsl:with-param name="side" select="'right'"/> +        </xsl:call-template> +      </xsl:if> + +      <xsl:if test="$valign.inherit != ''"> +        <xsl:attribute name="display-align"> +          <xsl:choose> +            <xsl:when test="$valign.inherit='top'">before</xsl:when> +            <xsl:when test="$valign.inherit='middle'">center</xsl:when> +            <xsl:when test="$valign.inherit='bottom'">after</xsl:when> +            <xsl:otherwise> +              <xsl:message> +                <xsl:text>Unexpected valign value: </xsl:text> +                <xsl:value-of select="$valign.inherit"/> +                <xsl:text>, center used.</xsl:text> +              </xsl:message> +              <xsl:text>center</xsl:text> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:attribute> +      </xsl:if> + +      <xsl:choose> +        <xsl:when test="$align.inherit = 'char' and $char.inherit != ''"> +          <xsl:attribute name="text-align"> +            <xsl:value-of select="$char.inherit"/> +          </xsl:attribute> +        </xsl:when> +        <xsl:when test="$align.inherit != ''"> +          <xsl:attribute name="text-align"> +            <xsl:value-of select="$align.inherit"/> +          </xsl:attribute> +        </xsl:when> +      </xsl:choose> + +    </xsl:when> +    <xsl:otherwise> +      <!-- HTML table --> +      <xsl:variable name="border"  +                    select="(ancestor::table | +                             ancestor::informaltable)[last()]/@border"/> +      <xsl:if test="$border != '' and $border != 0"> +        <xsl:attribute name="border"> +          <xsl:value-of select="$table.cell.border.thickness"/> +          <xsl:text> </xsl:text> +          <xsl:value-of select="$table.cell.border.style"/> +          <xsl:text> </xsl:text> +          <xsl:value-of select="$table.cell.border.color"/> +        </xsl:attribute> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<!-- Expand this template to add properties to any cell's block --> +<xsl:template name="table.cell.block.properties"> +  <!-- highlight this entry? --> +  <xsl:if test="ancestor::thead or ancestor::tfoot"> +    <xsl:attribute name="font-weight">bold</xsl:attribute> +  </xsl:if> +</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) > $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.raw"> +  <xsl:param name="cols" select="1"/> +  <xsl:param name="count" select="1"/> + +  <xsl:choose> +    <xsl:when test="$count>$cols"></xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="generate.col.raw"> +        <xsl:with-param name="countcol" select="$count"/> +      </xsl:call-template> +      <xsl:call-template name="generate.colgroup.raw"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="count" select="$count+1"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="generate.colgroup"> +  <xsl:param name="cols" select="1"/> +  <xsl:param name="count" select="1"/> + +  <xsl:choose> +    <xsl:when test="$count>$cols"></xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="generate.col"> +        <xsl:with-param name="countcol" select="$count"/> +      </xsl:call-template> +      <xsl:call-template name="generate.colgroup"> +        <xsl:with-param name="cols" select="$cols"/> +        <xsl:with-param name="count" select="$count+1"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="generate.col.raw"> +  <!-- generate the table-column for column countcol --> +  <xsl:param name="countcol">1</xsl:param> +  <xsl:param name="colspecs" select="./colspec"/> +  <xsl:param name="count">1</xsl:param> +  <xsl:param name="colnum">1</xsl:param> + +  <xsl:choose> +    <xsl:when test="$count>count($colspecs)"> +      <fo:table-column column-number="{$countcol}"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="colspec" select="$colspecs[$count=position()]"/> + +      <xsl:variable name="colspec.colnum"> +        <xsl:choose> +          <xsl:when test="$colspec/@colnum"> +            <xsl:value-of select="$colspec/@colnum"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$colnum"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="colspec.colwidth"> +        <xsl:choose> +          <xsl:when test="$colspec/@colwidth"> +            <xsl:value-of select="$colspec/@colwidth"/> +          </xsl:when> +          <xsl:otherwise>1*</xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$colspec.colnum=$countcol"> +          <fo:table-column column-number="{$countcol}"> +            <xsl:attribute name="column-width"> +              <xsl:value-of select="$colspec.colwidth"/> +            </xsl:attribute> +          </fo:table-column> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="generate.col.raw"> +            <xsl:with-param name="countcol" select="$countcol"/> +            <xsl:with-param name="colspecs" select="$colspecs"/> +            <xsl:with-param name="count" select="$count+1"/> +            <xsl:with-param name="colnum"> +              <xsl:choose> +                <xsl:when test="$colspec/@colnum"> +                  <xsl:value-of select="$colspec/@colnum + 1"/> +                </xsl:when> +                <xsl:otherwise> +                  <xsl:value-of select="$colnum + 1"/> +                </xsl:otherwise> +              </xsl:choose> +            </xsl:with-param> +           </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="generate.col"> +  <!-- generate the table-column for column countcol --> +  <xsl:param name="countcol">1</xsl:param> +  <xsl:param name="colspecs" select="./colspec"/> +  <xsl:param name="count">1</xsl:param> +  <xsl:param name="colnum">1</xsl:param> + +  <xsl:choose> +    <xsl:when test="$count>count($colspecs)"> +      <fo:table-column column-number="{$countcol}"> +        <xsl:variable name="colwidth"> +          <xsl:call-template name="calc.column.width"/> +        </xsl:variable> +        <xsl:if test="$colwidth != 'proportional-column-width(1)'"> +          <xsl:attribute name="column-width"> +            <xsl:value-of select="$colwidth"/> +          </xsl:attribute> +        </xsl:if> +      </fo:table-column> +    </xsl:when> +    <xsl:otherwise> +      <xsl:variable name="colspec" select="$colspecs[$count=position()]"/> + +      <xsl:variable name="colspec.colnum"> +        <xsl:choose> +          <xsl:when test="$colspec/@colnum"> +            <xsl:value-of select="$colspec/@colnum"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:value-of select="$colnum"/> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:variable name="colspec.colwidth"> +        <xsl:choose> +          <xsl:when test="$colspec/@colwidth"> +            <xsl:value-of select="$colspec/@colwidth"/> +          </xsl:when> +          <xsl:otherwise>1*</xsl:otherwise> +        </xsl:choose> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$colspec.colnum=$countcol"> +          <fo:table-column column-number="{$countcol}"> +            <xsl:variable name="colwidth"> +              <xsl:call-template name="calc.column.width"> +                <xsl:with-param name="colwidth"> +                  <xsl:value-of select="$colspec.colwidth"/> +                </xsl:with-param> +              </xsl:call-template> +            </xsl:variable> +            <xsl:if test="$colwidth != 'proportional-column-width(1)'"> +              <xsl:attribute name="column-width"> +                <xsl:value-of select="$colwidth"/> +              </xsl:attribute> +            </xsl:if> +          </fo:table-column> +        </xsl:when> +        <xsl:otherwise> +          <xsl:call-template name="generate.col"> +            <xsl:with-param name="countcol" select="$countcol"/> +            <xsl:with-param name="colspecs" select="$colspecs"/> +            <xsl:with-param name="count" select="$count+1"/> +            <xsl:with-param name="colnum"> +              <xsl:choose> +                <xsl:when test="$colspec/@colnum"> +                  <xsl:value-of select="$colspec/@colnum + 1"/> +                </xsl:when> +                <xsl:otherwise> +                  <xsl:value-of select="$colnum + 1"/> +                </xsl:otherwise> +              </xsl:choose> +            </xsl:with-param> +           </xsl:call-template> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<doc:template name="calc.column.width" xmlns=""> +<refpurpose>Calculate an XSL FO table column width specification from a +CALS table column width specification.</refpurpose> + +<refdescription> +<para>CALS expresses table column widths in the following basic +forms:</para> + +<itemizedlist> +<listitem> +<para><emphasis>99.99units</emphasis>, a fixed length specifier.</para> +</listitem> +<listitem> +<para><emphasis>99.99</emphasis>, a fixed length specifier without any units.</para> +</listitem> +<listitem> +<para><emphasis>99.99*</emphasis>, a relative length specifier.</para> +</listitem> +<listitem> +<para><emphasis>99.99*+99.99units</emphasis>, a combination of both.</para> +</listitem> +</itemizedlist> + +<para>The CALS units are points (pt), picas (pi), centimeters (cm), +millimeters (mm), and inches (in). These are the same units as XSL, +except that XSL abbreviates picas "pc" instead of "pi". If a length +specifier has no units, the CALS default unit (pt) is assumed.</para> + +<para>Relative length specifiers are represented in XSL with the +proportional-column-width() function.</para> + +<para>Here are some examples:</para> + +<itemizedlist> +<listitem> +<para>"36pt" becomes "36pt"</para> +</listitem> +<listitem> +<para>"3pi" becomes "3pc"</para> +</listitem> +<listitem> +<para>"36" becomes "36pt"</para> +</listitem> +<listitem> +<para>"3*" becomes "proportional-column-width(3)"</para> +</listitem> +<listitem> +<para>"3*+2pi" becomes "proportional-column-width(3)+2pc"</para> +</listitem> +<listitem> +<para>"1*+2" becomes "proportional-column-width(1)+2pt"</para> +</listitem> +</itemizedlist> +</refdescription> + +<refparameter> +<variablelist> +<varlistentry><term>colwidth</term> +<listitem> +<para>The CALS column width specification.</para> +</listitem> +</varlistentry> +</variablelist> +</refparameter> + +<refreturn> +<para>The XSL column width specification.</para> +</refreturn> +</doc:template> + +<xsl:template name="calc.column.width"> +  <xsl:param name="colwidth">1*</xsl:param> + +  <!-- Ok, the colwidth could have any one of the following forms: --> +  <!--        1*       = proportional width --> +  <!--         *       = same as 1* --> +  <!--     1unit       = 1.0 units wide --> +  <!--         1       = 1pt wide --> +  <!--  1*+1unit       = proportional width + some fixed width --> +  <!--      1*+1       = proportional width + some fixed width --> + +  <!-- If it has a proportional width, translate it to XSL --> +  <xsl:if test="contains($colwidth, '*')"> +    <xsl:text>proportional-column-width(</xsl:text> +    <xsl:choose> +      <xsl:when test="substring-before($colwidth, '*') != ''">  +        <xsl:value-of select="substring-before($colwidth, '*')"/> +      </xsl:when> +      <xsl:otherwise> +         <xsl:text>1.00</xsl:text> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:text>)</xsl:text> +  </xsl:if> + +  <!-- Now grab the non-proportional part of the specification --> +  <xsl:variable name="width-units"> +    <xsl:choose> +      <xsl:when test="contains($colwidth, '*')"> +        <xsl:value-of +             select="normalize-space(substring-after($colwidth, '*'))"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="normalize-space($colwidth)"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <!-- Ok, now the width-units could have any one of the following forms: --> +  <!--                 = <empty string> --> +  <!--     1unit       = 1.0 units wide --> +  <!--         1       = 1pt wide --> +  <!-- with an optional leading sign --> + +  <!-- Grab the width part by blanking out the units part and discarding --> +  <!-- whitespace. It's not pretty, but it works. --> +  <xsl:variable name="width" +       select="normalize-space(translate($width-units, +                                         '+-0123456789.abcdefghijklmnopqrstuvwxyz', +                                         '+-0123456789.'))"/> + +  <!-- Grab the units part by blanking out the width part and discarding --> +  <!-- whitespace. It's not pretty, but it works. --> +  <xsl:variable name="units" +       select="normalize-space(translate($width-units, +                                         'abcdefghijklmnopqrstuvwxyz+-0123456789.', +                                         'abcdefghijklmnopqrstuvwxyz'))"/> + +  <!-- Output the width --> +  <xsl:value-of select="$width"/> + +  <!-- Output the units, translated appropriately --> +  <xsl:choose> +    <xsl:when test="$units = 'pi'">pc</xsl:when> +    <xsl:when test="$units = '' and $width != ''">pt</xsl:when> +    <xsl:otherwise><xsl:value-of select="$units"/></xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/task.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/task.xsl new file mode 100644 index 0000000..94a136b --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/task.xsl @@ -0,0 +1,81 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version="1.0"> + +<!-- ******************************************************************** +     $Id: task.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="task"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <xsl:variable name="param.placement" +                select="substring-after(normalize-space($formal.title.placement), +                                        concat(local-name(.), ' '))"/> + +  <xsl:variable name="placement"> +    <xsl:choose> +      <xsl:when test="contains($param.placement, ' ')"> +        <xsl:value-of select="substring-before($param.placement, ' ')"/> +      </xsl:when> +      <xsl:when test="$param.placement = ''">before</xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$param.placement"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="preamble" +                select="*[not(self::title +                              or self::titleabbrev)]"/> + +  <fo:block id="{$id}" +            xsl:use-attribute-sets="formal.object.properties"> +    <xsl:call-template name="anchor"/> + +    <xsl:if test="title and $placement = 'before'"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> + +    <xsl:apply-templates select="$preamble"/> + +    <xsl:if test="title and $placement != 'before'"> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="task/title"> +  <!-- nop --> +</xsl:template> + +<xsl:template match="tasksummary"> +  <xsl:call-template name="semiformal.object"/> +</xsl:template> + +<xsl:template match="tasksummary/title"/> + +<xsl:template match="taskprerequisites"> +  <xsl:call-template name="semiformal.object"/> +</xsl:template> + +<xsl:template match="taskprerequisites/title"/> + +<xsl:template match="taskrelated"> +  <xsl:call-template name="semiformal.object"/> +</xsl:template> + +<xsl:template match="taskrelated/title"/> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/titlepage.templates.xml b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/titlepage.templates.xml new file mode 100644 index 0000000..f4e4dbd --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/titlepage.templates.xml @@ -0,0 +1,1311 @@ +<!DOCTYPE t:templates [ +<!ENTITY hsize0 "10pt"> +<!ENTITY hsize1 "12pt"> +<!ENTITY hsize2 "14.4pt"> +<!ENTITY hsize3 "17.28pt"> +<!ENTITY hsize4 "20.736pt"> +<!ENTITY hsize5 "24.8832pt"> +<!ENTITY hsize0space "7.5pt"> <!-- 0.75 * hsize0 --> +<!ENTITY hsize1space "9pt"> <!-- 0.75 * hsize1 --> +<!ENTITY hsize2space "10.8pt"> <!-- 0.75 * hsize2 --> +<!ENTITY hsize3space "12.96pt"> <!-- 0.75 * hsize3 --> +<!ENTITY hsize4space "15.552pt"> <!-- 0.75 * hsize4 --> +<!ENTITY hsize5space "18.6624pt"> <!-- 0.75 * hsize5 --> +]> +<t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0" +	     xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param" +             xmlns:fo="http://www.w3.org/1999/XSL/Format" +             xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + +<!-- ******************************************************************** +     $Id: titlepage.templates.xml 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the DocBook XSL Stylesheet distribution. +     See ../README or http://docbook.sf.net/ for copyright +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<t:titlepage t:element="article" t:wrapper="fo:block" +             font-family="{$title.fontset}"> + +  <t:titlepage-content t:side="recto" +	     start-indent="0pt" +             text-align="center"> + +    <title t:named-template="component.title" +	   param:node="ancestor-or-self::article[1]" +	   keep-with-next.within-column="always" +	   font-size="&hsize5;" +	   font-weight="bold"/> + +    <subtitle/> + +    <corpauthor space-before="0.5em" +                font-size="&hsize2;"/> +    <authorgroup space-before="0.5em" +                 font-size="&hsize2;"/> +    <author space-before="0.5em" +            font-size="&hsize2;"/> + +    <othercredit space-before="0.5em"/> +    <releaseinfo space-before="0.5em"/> +    <copyright space-before="0.5em"/> +    <legalnotice text-align="start" +                 margin-left="0.5in" +                 margin-right="0.5in" +                 font-family="{$body.fontset}"/> +    <pubdate space-before="0.5em"/> +    <revision space-before="0.5em"/> +    <revhistory space-before="0.5em"/> +    <abstract space-before="0.5em" +	      text-align="start" +	      margin-left="0.5in" +              margin-right="0.5in" +              font-family="{$body.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="set" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +      <title +	     t:named-template="division.title" +	     param:node="ancestor-or-self::set[1]" +	     text-align="center" +	     font-size="&hsize5;" +	     space-before="&hsize5space;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}" +	      text-align="center"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="book" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:named-template="division.title" +	     param:node="ancestor-or-self::book[1]" +	     text-align="center" +	     font-size="&hsize5;" +	     space-before="&hsize5space;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +      <subtitle +		text-align="center" +		font-size="&hsize4;" +		space-before="&hsize4space;" +		font-family="{$title.fontset}"/> +      <corpauthor font-size="&hsize3;" +		  keep-with-next.within-column="always" +		  space-before="2in"/> +      <authorgroup space-before="2in"/> +      <author font-size="&hsize3;" +	      space-before="&hsize2space;" +	      keep-with-next.within-column="always"/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +      <title +	     t:named-template="book.verso.title" +	     font-size="&hsize2;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +      <corpauthor/> +      <authorgroup t:named-template="verso.authorgroup"/> +      <author/> +      <othercredit/> +      <releaseinfo space-before="0.5em"/> +      <pubdate space-before="1em"/> +      <copyright/> +      <abstract/> +      <legalnotice font-size="8pt"/> +  </t:titlepage-content> + +  <t:titlepage-separator> +      <fo:block break-after="page"/> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +      <fo:block break-after="page"/> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="part" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +      <title +	     t:named-template="division.title" +	     param:node="ancestor-or-self::part[1]" +	     text-align="center" +	     font-size="&hsize5;" +	     space-before="&hsize5space;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    <subtitle +	      text-align="center" +	      font-size="&hsize4;" +	      space-before="&hsize4space;" +	      font-weight='bold' +	      font-style='italic' +	      font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="partintro" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   text-align="center" +	   font-size="&hsize5;" +	   font-weight="bold" +	   space-before="1em" +	   font-family="{$title.fontset}"/> +    <subtitle +	      text-align="center" +	      font-size="&hsize2;" +	      font-weight="bold" +	      font-style="italic" +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="reference" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +      <title +	     t:named-template="division.title" +	     param:node="ancestor-or-self::reference[1]" +	     text-align="center" +	     font-size="&hsize5;" +	     space-before="&hsize5space;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}" +	      text-align="center"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsynopsisdiv" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsection" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsect1" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsect2" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsect3" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   font-family="{$title.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="dedication" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::dedication[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="preface" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::preface[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +      <corpauthor/> +      <authorgroup/> +      <author/> +      <othercredit/> +      <releaseinfo/> +      <copyright/> +      <legalnotice/> +      <pubdate/> +      <revision/> +      <revhistory/> +      <abstract/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="chapter" t:wrapper="fo:block" +               font-family="{$title.fontset}"> +    <t:titlepage-content t:side="recto" margin-left="{$title.margin.left}"> +      <title t:named-template="component.title" +	     param:node="ancestor-or-self::chapter[1]" +	     font-size="&hsize5;" +	     font-weight="bold"/> + +      <subtitle space-before="0.5em" +		font-style="italic" +		font-size="&hsize2;" +		font-weight="bold"/> + +      <corpauthor  space-before="0.5em" +	           space-after="0.5em" +                   font-size="&hsize2;"/> + +      <authorgroup space-before="0.5em" +	           space-after="0.5em" +                   font-size="&hsize2;"/> + +      <author      space-before="0.5em" +	           space-after="0.5em" +                   font-size="&hsize2;"/> + +      <othercredit/> +      <releaseinfo/> +      <copyright/> +      <legalnotice/> +      <pubdate/> +      <revision/> +      <revhistory/> +      <abstract/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="appendix" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:named-template="component.title" +	     param:node="ancestor-or-self::appendix[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +      <subtitle +		font-family="{$title.fontset}"/> +      <corpauthor/> +      <authorgroup/> +      <author/> +      <othercredit/> +      <releaseinfo/> +      <copyright/> +      <legalnotice/> +      <pubdate/> +      <revision/> +      <revhistory/> +      <abstract/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="section" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect1" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect2" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect3" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect4" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect5" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="simplesect" t:wrapper="fo:block"> +  <t:titlepage-content t:side="recto"> +    <title +	   margin-left="{$title.margin.left}" +	   font-family="{$title.fontset}"/> +    <subtitle +	      font-family="{$title.fontset}"/> +    <corpauthor/> +    <authorgroup/> +    <author/> +    <othercredit/> +    <releaseinfo/> +    <copyright/> +    <legalnotice/> +    <pubdate/> +    <revision/> +    <revhistory/> +    <abstract/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="bibliography" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::bibliography[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="bibliodiv" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title t:named-template="component.title" +	     param:node="ancestor-or-self::bibliodiv[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize4;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="glossary" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::glossary[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="glossdiv" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title t:named-template="component.title" +	     param:node="ancestor-or-self::glossdiv[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize4;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="index" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::index[1]" +             param:pagewide="1" +	     margin-left="0pt" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <!-- The indexdiv.title template is used so that manual and --> +  <!-- automatically generated indexdiv titles get the same --> +  <!-- formatting. --> + +  <t:titlepage t:element="indexdiv" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title t:force="1" +	     t:named-template="indexdiv.title" +	     param:title="title"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="setindex" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::setindex[1]" +             param:pagewide="1" +	     margin-left="0pt" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="colophon" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="component.title" +	     param:node="ancestor-or-self::colophon[1]" +	     margin-left="{$title.margin.left}" +	     font-size="&hsize5;" +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="sidebar" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title  +	     font-family="{$title.fontset}" +	     font-weight="bold"/> +      <subtitle +		font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> +<t:titlepage t:element="qandaset" t:wrapper="fo:block" +             font-family="{$title.fontset}"> + +  <t:titlepage-content t:side="recto" +	     start-indent="0pt" +             text-align="center"> + +    <title t:named-template="component.title" +	   param:node="ancestor-or-self::qandaset[1]" +	   keep-with-next.within-column="always" +	   font-size="&hsize5;" +	   font-weight="bold"/> + +    <subtitle/> + +    <corpauthor space-before="0.5em" +                font-size="&hsize2;"/> +    <authorgroup space-before="0.5em" +                 font-size="&hsize2;"/> +    <author space-before="0.5em" +            font-size="&hsize2;"/> + +    <othercredit space-before="0.5em"/> +    <releaseinfo space-before="0.5em"/> +    <copyright space-before="0.5em"/> +    <legalnotice text-align="start" +                 margin-left="0.5in" +                 margin-right="0.5in" +                 font-family="{$body.fontset}"/> +    <pubdate space-before="0.5em"/> +    <revision space-before="0.5em"/> +    <revhistory space-before="0.5em"/> +    <abstract space-before="0.5em" +	      text-align="start" +	      margin-left="0.5in" +              margin-right="0.5in" +              font-family="{$body.fontset}"/> +  </t:titlepage-content> + +  <t:titlepage-content t:side="verso"> +  </t:titlepage-content> + +  <t:titlepage-separator> +  </t:titlepage-separator> + +  <t:titlepage-before t:side="recto"> +  </t:titlepage-before> + +  <t:titlepage-before t:side="verso"> +  </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +  <t:titlepage t:element="table.of.contents" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'TableofContents'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.tables" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofTables'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.figures" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofFigures'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.examples" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofExamples'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.equations" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofEquations'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.procedures" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofProcedures'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +  <t:titlepage t:element="list.of.unknowns" t:wrapper="fo:block"> +    <t:titlepage-content t:side="recto"> +      <title +	     t:force="1" +	     t:named-template="gentext" +	     param:key="'ListofUnknown'" +             space-before.minimum="1em" +             space-before.optimum="1.5em" +             space-before.maximum="2em" +	     space-after="0.5em" +	     margin-left="{$title.margin.left}" +	     start-indent="0pt" +	     font-size="&hsize3;" +	     font-weight="bold" +	     font-family="{$title.fontset}"/> +    </t:titlepage-content> + +    <t:titlepage-content t:side="verso"> +    </t:titlepage-content> + +    <t:titlepage-separator> +    </t:titlepage-separator> + +    <t:titlepage-before t:side="recto"> +    </t:titlepage-before> + +    <t:titlepage-before t:side="verso"> +    </t:titlepage-before> +  </t:titlepage> + +<!-- ==================================================================== --> + +</t:templates> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/titlepage.templates.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/titlepage.templates.xsl new file mode 100644 index 0000000..4573540 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/titlepage.templates.xsl @@ -0,0 +1,5094 @@ +<?xml version="1.0"?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl"> + +<!-- This stylesheet was created by template/titlepage.xsl--> + +<xsl:template name="article.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="articleinfo/title"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/> +    </xsl:when> +    <xsl:when test="artheader/title"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="articleinfo/subtitle"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="artheader/subtitle"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/> +  <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="article.titlepage.verso"> +</xsl:template> + +<xsl:template name="article.titlepage.separator"> +</xsl:template> + +<xsl:template name="article.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="article.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="article.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="article.titlepage.before.recto"/> +      <xsl:call-template name="article.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="article.titlepage.before.verso"/> +      <xsl:call-template name="article.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="article.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::article[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="set.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="setinfo/title"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="setinfo/subtitle"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/> +  <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="set.titlepage.verso"> +</xsl:template> + +<xsl:template name="set.titlepage.separator"> +</xsl:template> + +<xsl:template name="set.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="set.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="set.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="set.titlepage.before.recto"/> +      <xsl:call-template name="set.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="set.titlepage.before.verso"/> +      <xsl:call-template name="set.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="set.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::set[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.fontset}" text-align="center"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="book.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="bookinfo/title"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="bookinfo/subtitle"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/> +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/> +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/> +  <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/> +</xsl:template> + +<xsl:template name="book.titlepage.verso"> +  <xsl:choose> +    <xsl:when test="bookinfo/title"> +      <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/corpauthor"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/authorgroup"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/author"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/othercredit"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/abstract"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/abstract"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/> +  <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/legalnotice"/> +</xsl:template> + +<xsl:template name="book.titlepage.separator"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/> +</xsl:template> + +<xsl:template name="book.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/> +</xsl:template> + +<xsl:template name="book.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="book.titlepage.before.recto"/> +      <xsl:call-template name="book.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="book.titlepage.before.verso"/> +      <xsl:call-template name="book.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="book.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::book[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" font-size="17.28pt" keep-with-next.within-column="always" space-before="2in"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="2in"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" font-size="17.28pt" space-before="10.8pt" keep-with-next.within-column="always"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="14.4pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="book.verso.title"> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:call-template name="verso.authorgroup"> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="1em"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="8pt"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="part.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="partinfo/title"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="partinfo/subtitle"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="part.titlepage.verso"> +</xsl:template> + +<xsl:template name="part.titlepage.separator"> +</xsl:template> + +<xsl:template name="part.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="part.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="part.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="part.titlepage.before.recto"/> +      <xsl:call-template name="part.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="part.titlepage.before.verso"/> +      <xsl:call-template name="part.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="part.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="part.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::part[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="partintro.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="partintroinfo/title"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="partintroinfo/subtitle"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="partintro.titlepage.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage.separator"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="partintro.titlepage.before.recto"/> +      <xsl:call-template name="partintro.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="partintro.titlepage.before.verso"/> +      <xsl:call-template name="partintro.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="partintro.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="24.8832pt" font-weight="bold" space-before="1em" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="14.4pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="reference.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="referenceinfo/title"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="referenceinfo/subtitle"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="reference.titlepage.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage.separator"> +</xsl:template> + +<xsl:template name="reference.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="reference.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="reference.titlepage.before.recto"/> +      <xsl:call-template name="reference.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="reference.titlepage.before.verso"/> +      <xsl:call-template name="reference.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="reference.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::reference[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" font-family="{$title.fontset}" text-align="center"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="refsynopsisdivinfo/title"> +      <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="refsynopsisdivinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="refsynopsisdiv.titlepage.before.recto"/> +      <xsl:call-template name="refsynopsisdiv.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="refsynopsisdiv.titlepage.before.verso"/> +      <xsl:call-template name="refsynopsisdiv.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="refsynopsisdiv.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsynopsisdiv.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsynopsisdiv.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsynopsisdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsynopsisdiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsection.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="refsectioninfo/title"> +      <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="refsectioninfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="refsection.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsection.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsection.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsection.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsection.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="refsection.titlepage.before.recto"/> +      <xsl:call-template name="refsection.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="refsection.titlepage.before.verso"/> +      <xsl:call-template name="refsection.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="refsection.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsection.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsection.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsection.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsection.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsection.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsect1.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="refsect1info/title"> +      <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="refsect1info/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="refsect1.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsect1.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsect1.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsect1.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsect1.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="refsect1.titlepage.before.recto"/> +      <xsl:call-template name="refsect1.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="refsect1.titlepage.before.verso"/> +      <xsl:call-template name="refsect1.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="refsect1.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsect1.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsect1.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect1.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsect2.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="refsect2info/title"> +      <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="refsect2info/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="refsect2.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsect2.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsect2.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsect2.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsect2.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="refsect2.titlepage.before.recto"/> +      <xsl:call-template name="refsect2.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="refsect2.titlepage.before.verso"/> +      <xsl:call-template name="refsect2.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="refsect2.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsect2.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsect2.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect2.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsect3.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="refsect3info/title"> +      <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="refsect3info/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="refsect3.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsect3.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsect3.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsect3.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsect3.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="refsect3.titlepage.before.recto"/> +      <xsl:call-template name="refsect3.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="refsect3.titlepage.before.verso"/> +      <xsl:call-template name="refsect3.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="refsect3.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsect3.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsect3.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect3.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="dedication.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="dedicationinfo/subtitle"> +      <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="dedication.titlepage.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage.separator"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="dedication.titlepage.before.recto"/> +      <xsl:call-template name="dedication.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="dedication.titlepage.before.verso"/> +      <xsl:call-template name="dedication.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="dedication.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="preface.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::preface[1]"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="prefaceinfo/subtitle"> +      <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="preface.titlepage.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage.separator"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="preface.titlepage.before.recto"/> +      <xsl:call-template name="preface.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="preface.titlepage.before.verso"/> +      <xsl:call-template name="preface.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="preface.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="chapter.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="chapterinfo/title"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="chapterinfo/subtitle"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="chapter.titlepage.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage.separator"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="chapter.titlepage.before.recto"/> +      <xsl:call-template name="chapter.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block margin-left="{$title.margin.left}"><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="chapter.titlepage.before.verso"/> +      <xsl:call-template name="chapter.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="chapter.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="24.8832pt" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" font-style="italic" font-size="14.4pt" font-weight="bold"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="appendix.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="appendixinfo/title"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="appendixinfo/subtitle"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="appendix.titlepage.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage.separator"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="appendix.titlepage.before.recto"/> +      <xsl:call-template name="appendix.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="appendix.titlepage.before.verso"/> +      <xsl:call-template name="appendix.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="appendix.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::appendix[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="section.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sectioninfo/title"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sectioninfo/subtitle"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/> +  <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="section.titlepage.verso"> +</xsl:template> + +<xsl:template name="section.titlepage.separator"> +</xsl:template> + +<xsl:template name="section.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="section.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="section.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="section.titlepage.before.recto"/> +      <xsl:call-template name="section.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="section.titlepage.before.verso"/> +      <xsl:call-template name="section.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="section.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect1.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sect1info/title"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sect1info/subtitle"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/> +  <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect1.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sect1.titlepage.before.recto"/> +      <xsl:call-template name="sect1.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sect1.titlepage.before.verso"/> +      <xsl:call-template name="sect1.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sect1.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect2.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sect2info/title"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sect2info/subtitle"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/> +  <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect2.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sect2.titlepage.before.recto"/> +      <xsl:call-template name="sect2.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sect2.titlepage.before.verso"/> +      <xsl:call-template name="sect2.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sect2.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect3.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sect3info/title"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sect3info/subtitle"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/> +  <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect3.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sect3.titlepage.before.recto"/> +      <xsl:call-template name="sect3.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sect3.titlepage.before.verso"/> +      <xsl:call-template name="sect3.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sect3.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect4.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sect4info/title"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sect4info/subtitle"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/> +  <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect4.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sect4.titlepage.before.recto"/> +      <xsl:call-template name="sect4.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sect4.titlepage.before.verso"/> +      <xsl:call-template name="sect4.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sect4.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect5.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sect5info/title"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sect5info/subtitle"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/> +  <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect5.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sect5.titlepage.before.recto"/> +      <xsl:call-template name="sect5.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sect5.titlepage.before.verso"/> +      <xsl:call-template name="sect5.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sect5.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="simplesect.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="simplesectinfo/title"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="simplesectinfo/subtitle"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/> +  <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="simplesect.titlepage.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.separator"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="simplesect.titlepage.before.recto"/> +      <xsl:call-template name="simplesect.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="simplesect.titlepage.before.verso"/> +      <xsl:call-template name="simplesect.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="simplesect.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="bibliography.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="bibliographyinfo/subtitle"> +      <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="bibliography.titlepage.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.separator"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="bibliography.titlepage.before.recto"/> +      <xsl:call-template name="bibliography.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="bibliography.titlepage.before.verso"/> +      <xsl:call-template name="bibliography.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="bibliography.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="bibliodivinfo/title"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="bibliodivinfo/subtitle"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="bibliodiv.titlepage.before.recto"/> +      <xsl:call-template name="bibliodiv.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="bibliodiv.titlepage.before.verso"/> +      <xsl:call-template name="bibliodiv.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="bibliodiv.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="bibliodiv.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="bibliodiv.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="bibliodiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::bibliodiv[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliodiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="bibliodiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="glossary.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="glossaryinfo/subtitle"> +      <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="glossary.titlepage.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage.separator"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="glossary.titlepage.before.recto"/> +      <xsl:call-template name="glossary.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="glossary.titlepage.before.verso"/> +      <xsl:call-template name="glossary.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="glossary.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="glossdivinfo/title"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="glossdivinfo/subtitle"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="glossdiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="glossdiv.titlepage.before.recto"/> +      <xsl:call-template name="glossdiv.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="glossdiv.titlepage.before.verso"/> +      <xsl:call-template name="glossdiv.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="glossdiv.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="glossdiv.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="glossdiv.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="glossdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::glossdiv[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="glossdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="glossdiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="index.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::index[1]"/> +<xsl:with-param name="pagewide" select="1"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="indexinfo/subtitle"> +      <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="index.titlepage.verso"> +</xsl:template> + +<xsl:template name="index.titlepage.separator"> +</xsl:template> + +<xsl:template name="index.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="index.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="index.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="index.titlepage.before.recto"/> +      <xsl:call-template name="index.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="index.titlepage.before.verso"/> +      <xsl:call-template name="index.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="index.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style"> +<xsl:call-template name="indexdiv.title"> +<xsl:with-param name="title" select="title"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="indexdivinfo/subtitle"> +      <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="indexdivinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="indexdiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="indexdiv.titlepage.before.recto"/> +      <xsl:call-template name="indexdiv.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="indexdiv.titlepage.before.verso"/> +      <xsl:call-template name="indexdiv.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="indexdiv.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="indexdiv.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="indexdiv.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="indexdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="indexdiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="setindex.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/> +<xsl:with-param name="pagewide" select="1"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="setindexinfo/subtitle"> +      <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="setindex.titlepage.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage.separator"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="setindex.titlepage.before.recto"/> +      <xsl:call-template name="setindex.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="setindex.titlepage.before.verso"/> +      <xsl:call-template name="setindex.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="setindex.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="colophon.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::colophon[1]"/> +</xsl:call-template></fo:block> +  <xsl:choose> +    <xsl:when test="colophoninfo/subtitle"> +      <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="colophoninfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="colophon.titlepage.verso"> +</xsl:template> + +<xsl:template name="colophon.titlepage.separator"> +</xsl:template> + +<xsl:template name="colophon.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="colophon.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="colophon.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="colophon.titlepage.before.recto"/> +      <xsl:call-template name="colophon.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="colophon.titlepage.before.verso"/> +      <xsl:call-template name="colophon.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="colophon.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="colophon.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="colophon.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="colophon.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="colophon.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sidebar.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="sidebarinfo/title"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/> +    </xsl:when> +    <xsl:when test="docinfo/title"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="sidebarinfo/subtitle"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="docinfo/subtitle"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +</xsl:template> + +<xsl:template name="sidebar.titlepage.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.separator"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="sidebar.titlepage.before.recto"/> +      <xsl:call-template name="sidebar.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="sidebar.titlepage.before.verso"/> +      <xsl:call-template name="sidebar.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="sidebar.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}" font-weight="bold"> +<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="qandaset.titlepage.recto"> +  <xsl:choose> +    <xsl:when test="qandasetinfo/title"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/title"/> +    </xsl:when> +    <xsl:when test="blockinfo/title"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/title"/> +    </xsl:when> +    <xsl:when test="info/title"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/title"/> +    </xsl:when> +    <xsl:when test="title"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="title"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:choose> +    <xsl:when test="qandasetinfo/subtitle"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="blockinfo/subtitle"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/subtitle"/> +    </xsl:when> +    <xsl:when test="info/subtitle"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/subtitle"/> +    </xsl:when> +    <xsl:when test="subtitle"> +      <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="subtitle"/> +    </xsl:when> +  </xsl:choose> + +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/corpauthor"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/corpauthor"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/corpauthor"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/authorgroup"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/authorgroup"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/authorgroup"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/author"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/author"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/author"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/othercredit"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/othercredit"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/othercredit"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/releaseinfo"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/releaseinfo"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/releaseinfo"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/copyright"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/copyright"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/copyright"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/legalnotice"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/legalnotice"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/legalnotice"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/pubdate"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/pubdate"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/pubdate"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revision"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revision"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revision"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revhistory"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revhistory"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revhistory"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/abstract"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/abstract"/> +  <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="qandaset.titlepage.verso"> +</xsl:template> + +<xsl:template name="qandaset.titlepage.separator"> +</xsl:template> + +<xsl:template name="qandaset.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="qandaset.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="qandaset.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="qandaset.titlepage.before.recto"/> +      <xsl:call-template name="qandaset.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="qandaset.titlepage.before.verso"/> +      <xsl:call-template name="qandaset.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="qandaset.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="qandaset.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="qandaset.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::qandaset[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="table.of.contents.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'TableofContents'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.verso"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.separator"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="table.of.contents.titlepage.before.recto"/> +      <xsl:call-template name="table.of.contents.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="table.of.contents.titlepage.before.verso"/> +      <xsl:call-template name="table.of.contents.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="table.of.contents.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="table.of.contents.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="table.of.contents.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.tables.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofTables'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.tables.titlepage.before.recto"/> +      <xsl:call-template name="list.of.tables.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.tables.titlepage.before.verso"/> +      <xsl:call-template name="list.of.tables.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.tables.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.tables.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.tables.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.figures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofFigures'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.figures.titlepage.before.recto"/> +      <xsl:call-template name="list.of.figures.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.figures.titlepage.before.verso"/> +      <xsl:call-template name="list.of.figures.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.figures.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.figures.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.figures.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.examples.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofExamples'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.examples.titlepage.before.recto"/> +      <xsl:call-template name="list.of.examples.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.examples.titlepage.before.verso"/> +      <xsl:call-template name="list.of.examples.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.examples.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.examples.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.examples.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.equations.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofEquations'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.equations.titlepage.before.recto"/> +      <xsl:call-template name="list.of.equations.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.equations.titlepage.before.verso"/> +      <xsl:call-template name="list.of.equations.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.equations.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.equations.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.equations.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.procedures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofProcedures'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.procedures.titlepage.before.recto"/> +      <xsl:call-template name="list.of.procedures.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.procedures.titlepage.before.verso"/> +      <xsl:call-template name="list.of.procedures.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.procedures.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.procedures.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.procedures.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.recto"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.unknowns.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofUnknown'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage"> +  <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> +    <xsl:variable name="recto.content"> +      <xsl:call-template name="list.of.unknowns.titlepage.before.recto"/> +      <xsl:call-template name="list.of.unknowns.titlepage.recto"/> +    </xsl:variable> +    <xsl:variable name="recto.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$recto.content"/></fo:block> +    </xsl:if> +    <xsl:variable name="verso.content"> +      <xsl:call-template name="list.of.unknowns.titlepage.before.verso"/> +      <xsl:call-template name="list.of.unknowns.titlepage.verso"/> +    </xsl:variable> +    <xsl:variable name="verso.elements.count"> +      <xsl:choose> +        <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> +          <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> +        <xsl:otherwise>1</xsl:otherwise> +      </xsl:choose> +    </xsl:variable> +    <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> +      <fo:block><xsl:copy-of select="$verso.content"/></fo:block> +    </xsl:if> +    <xsl:call-template name="list.of.unknowns.titlepage.separator"/> +  </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.unknowns.titlepage.recto.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.unknowns.titlepage.verso.mode"> +  <!-- if an element isn't found in this mode, --> +  <!-- try the generic titlepage.mode --> +  <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +</xsl:stylesheet> + diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/titlepage.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/titlepage.xsl new file mode 100644 index 0000000..da82475 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/titlepage.xsl @@ -0,0 +1,738 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: titlepage.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:attribute-set name="book.titlepage.recto.style"> +  <xsl:attribute name="font-family"> +    <xsl:value-of select="$title.fontset"/> +  </xsl:attribute> +  <xsl:attribute name="font-weight">bold</xsl:attribute> +  <xsl:attribute name="font-size">12pt</xsl:attribute> +  <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="book.titlepage.verso.style"> +  <xsl:attribute name="font-size">10pt</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="article.titlepage.recto.style"/> +<xsl:attribute-set name="article.titlepage.verso.style"/> + +<xsl:attribute-set name="set.titlepage.recto.style"/> +<xsl:attribute-set name="set.titlepage.verso.style"/> + +<xsl:attribute-set name="part.titlepage.recto.style"> +  <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="part.titlepage.verso.style"/> + +<xsl:attribute-set name="partintro.titlepage.recto.style"/> +<xsl:attribute-set name="partintro.titlepage.verso.style"/> + +<xsl:attribute-set name="reference.titlepage.recto.style"/> +<xsl:attribute-set name="reference.titlepage.verso.style"/> + +<xsl:attribute-set name="dedication.titlepage.recto.style"/> +<xsl:attribute-set name="dedication.titlepage.verso.style"/> + +<xsl:attribute-set name="preface.titlepage.recto.style"/> +<xsl:attribute-set name="preface.titlepage.verso.style"/> + +<xsl:attribute-set name="chapter.titlepage.recto.style"/> +<xsl:attribute-set name="chapter.titlepage.verso.style"/> + +<xsl:attribute-set name="appendix.titlepage.recto.style"/> +<xsl:attribute-set name="appendix.titlepage.verso.style"/> + +<xsl:attribute-set name="bibliography.titlepage.recto.style"/> +<xsl:attribute-set name="bibliography.titlepage.verso.style"/> + +<xsl:attribute-set name="bibliodiv.titlepage.recto.style"/> +<xsl:attribute-set name="bibliodiv.titlepage.verso.style"/> + +<xsl:attribute-set name="glossary.titlepage.recto.style"/> +<xsl:attribute-set name="glossary.titlepage.verso.style"/> + +<xsl:attribute-set name="glossdiv.titlepage.recto.style"/> +<xsl:attribute-set name="glossdiv.titlepage.verso.style"/> + +<xsl:attribute-set name="index.titlepage.recto.style"/> +<xsl:attribute-set name="index.titlepage.verso.style"/> + +<xsl:attribute-set name="setindex.titlepage.recto.style"/> +<xsl:attribute-set name="setindex.titlepage.verso.style"/> + +<xsl:attribute-set name="indexdiv.titlepage.recto.style"/> +<xsl:attribute-set name="indexdiv.titlepage.verso.style"/> + +<xsl:attribute-set name="colophon.titlepage.recto.style"/> +<xsl:attribute-set name="colophon.titlepage.verso.style"/> + +<xsl:attribute-set name="sidebar.titlepage.recto.style"/> +<xsl:attribute-set name="sidebar.titlepage.verso.style"/> + +<xsl:attribute-set name="qandaset.titlepage.recto.style"/> +<xsl:attribute-set name="qandaset.titlepage.verso.style"/> + +<xsl:attribute-set name="section.titlepage.recto.style"> +  <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="section.titlepage.verso.style"> +  <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +  <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="sect1.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect1.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect2.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect2.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect3.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect3.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect4.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect4.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect5.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect5.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="simplesect.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="simplesect.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refnamediv.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refnamediv.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsynopsisdiv.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsynopsisdiv.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsection.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsection.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsect1.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsect1.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsect2.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsect2.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsect3.titlepage.recto.style" +                   use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsect3.titlepage.verso.style" +                   use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/> +<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.procedures.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.procedures.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="titlepage.mode"> +  <!-- if an element isn't found in this mode, try the default mode --> +  <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="abbrev" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="abstract" mode="titlepage.mode"> +  <fo:block> +    <xsl: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:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="abstract/title" mode="titlepage.mode"/> + +<xsl:template match="abstract/title" mode="titlepage.abstract.title.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="address" mode="titlepage.mode"> +  <!-- use the normal address handling code --> +  <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="affiliation" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="artpagenums" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="author" mode="titlepage.mode"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:call-template name="person.name"/> +    <xsl:if test="affiliation/orgname"> +      <xsl:text>, </xsl:text> +      <xsl:apply-templates select="affiliation/orgname" mode="titlepage.mode"/> +    </xsl:if> +    <xsl:if test="email|affiliation/address/email"> +      <xsl:text> </xsl:text> +      <xsl:apply-templates select="(email|affiliation/address/email)[1]"/> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="authorblurb" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="authorgroup" mode="titlepage.mode"> +  <fo:wrapper> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:wrapper> +</xsl:template> + +<xsl:template match="authorinitials" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="bibliomisc" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="bibliomset" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="collab" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="confgroup" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="confdates" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="conftitle" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="confnum" mode="titlepage.mode"> +  <!-- suppress --> +</xsl:template> + +<xsl:template match="contractnum" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="contractsponsor" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="contrib" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="copyright" mode="titlepage.mode"> +  <xsl:call-template name="gentext"> +    <xsl:with-param name="key" select="'Copyright'"/> +  </xsl:call-template> +  <xsl:call-template name="gentext.space"/> +  <xsl:call-template name="dingbat"> +    <xsl:with-param name="dingbat">copyright</xsl:with-param> +  </xsl:call-template> +  <xsl:call-template name="gentext.space"/> +  <xsl:call-template name="copyright.years"> +    <xsl:with-param name="years" select="year"/> +    <xsl:with-param name="print.ranges" select="$make.year.ranges"/> +    <xsl:with-param name="single.year.ranges" +                    select="$make.single.year.ranges"/> +  </xsl:call-template> +  <xsl:call-template name="gentext.space"/> +  <xsl:apply-templates select="holder" mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="year" mode="titlepage.mode"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="holder" mode="titlepage.mode"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="corpauthor" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="corpcredit" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="corpname" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="date" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="edition" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +  <xsl:call-template name="gentext.space"/> +  <xsl:call-template name="gentext"> +    <xsl:with-param name="key" select="'Edition'"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="editor" mode="titlepage.mode"> +  <!-- The first editor is dealt with in the following template, +       which in turn displays all editors of the same mode. --> +</xsl:template> + +<xsl:template match="editor[1]" priority="2" mode="titlepage.mode"> +  <xsl:call-template name="gentext.edited.by"/> +  <xsl:call-template name="gentext.space"/> +  <xsl:call-template name="person.name.list"> +    <xsl:with-param name="person.list" select="../editor"/> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="firstname" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="graphic" mode="titlepage.mode"> +  <!-- use the normal graphic handling code --> +  <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="honorific" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="isbn" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="issn" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="biblioid" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="itermset" mode="titlepage.mode"> +  <!-- discard --> +</xsl:template> + +<xsl:template match="invpartnumber" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="issuenum" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="jobtitle" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="keywordset" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="legalnotice" mode="titlepage.mode"> + +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> + +  <fo:block id="{$id}"> +    <xsl:if test="title"> <!-- FIXME: add param for using default title? --> +      <xsl:call-template name="formal.object.heading"/> +    </xsl:if> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="legalnotice/title" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="lineage" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="modespec" mode="titlepage.mode"> +  <!-- discard --> +</xsl:template> + +<xsl:template match="orgdiv" mode="titlepage.mode"> +  <xsl:if test="preceding-sibling::*[1][self::orgname]"> +    <xsl:text> </xsl:text> +  </xsl:if> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="orgname" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="othercredit" mode="titlepage.mode"> +  <xsl:variable name="contrib" select="string(contrib)"/> +  <xsl:choose> +    <xsl:when test="contrib"> +      <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])"> +        <fo:block> +          <xsl:apply-templates mode="titlepage.mode" select="contrib"/> +          <xsl:text>: </xsl:text> +          <xsl:call-template name="person.name"/> +          <xsl:apply-templates mode="titlepage.mode" select="affiliation"/> +          <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/> +        </fo:block> +      </xsl:if> +    </xsl:when> +    <xsl:otherwise> +      <fo:block><xsl:call-template name="person.name"/></fo:block> +      <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="othercredit" mode="titlepage.othercredits"> +  <xsl:text>, </xsl:text> +  <xsl:call-template name="person.name"/> +</xsl:template> + +<xsl:template match="othername" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="pagenums" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="printhistory" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="productname" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="productnumber" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="pubdate" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="publisher" mode="titlepage.mode"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<xsl:template match="publishername" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="pubsnumber" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="releaseinfo" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revhistory" mode="titlepage.mode"> + +  <xsl:variable name="explicit.table.width"> +    <xsl:call-template name="pi.dbfo_table-width"/> +  </xsl:variable> + +  <xsl:variable name="table.width"> +    <xsl:choose> +      <xsl:when test="$explicit.table.width != ''"> +        <xsl:value-of select="$explicit.table.width"/> +      </xsl:when> +      <xsl:when test="$default.table.width = ''"> +        <xsl:text>100%</xsl:text> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$default.table.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:table table-layout="fixed" width="{$table.width}" xsl:use-attribute-sets="revhistory.table.properties"> +    <fo:table-column column-number="1" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="2" column-width="proportional-column-width(1)"/> +    <fo:table-column column-number="3" column-width="proportional-column-width(1)"/> +    <fo:table-body start-indent="0pt" end-indent="0pt"> +      <fo:table-row> +        <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties"> +          <fo:block xsl:use-attribute-sets="revhistory.title.properties"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'RevHistory'"/> +            </xsl:call-template> +          </fo:block> +        </fo:table-cell> +      </fo:table-row> +      <xsl:apply-templates mode="titlepage.mode"/> +    </fo:table-body> +  </fo:table> +</xsl:template> + +<xsl:template match="revhistory/revision" mode="titlepage.mode"> +  <xsl:variable name="revnumber" select="revnumber"/> +  <xsl:variable name="revdate"   select="date"/> +  <xsl:variable name="revauthor" select="authorinitials|author"/> +  <xsl:variable name="revremark" select="revremark|revdescription"/> +  <fo:table-row> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:if test="$revnumber"> +          <xsl:call-template name="gentext"> +            <xsl:with-param name="key" select="'Revision'"/> +          </xsl:call-template> +          <xsl:call-template name="gentext.space"/> +          <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/> +        </xsl:if> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/> +      </fo:block> +    </fo:table-cell> +    <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> +      <fo:block> +        <xsl:for-each select="$revauthor"> +          <xsl:apply-templates select="." mode="titlepage.mode"/> +          <xsl:if test="position() != last()"> +            <xsl:text>, </xsl:text> +          </xsl:if> +        </xsl:for-each> +      </fo:block> +    </fo:table-cell> +  </fo:table-row> +  <xsl:if test="$revremark"> +    <fo:table-row> +      <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties"> +        <fo:block> +          <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/> +        </fo:block> +      </fo:table-cell> +    </fo:table-row> +  </xsl:if> +</xsl:template> + +<xsl:template match="revision/revnumber" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/date" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/authorinitials" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/author" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/revremark" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/revdescription" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="seriesvolnums" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="shortaffil" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subjectset" mode="titlepage.mode"> +  <!-- discard --> +</xsl:template> + +<xsl:template match="subtitle" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="surname" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="titleabbrev" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="volumenum" mode="titlepage.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Book templates --> + +<!-- Note: these templates cannot use *.titlepage.recto.mode or +     *.titlepage.verso.mode. If they do then subsequent use of a custom +     titlepage.templates.xml file will not work correctly. --> + +<!-- book recto --> + +<xsl:template match="bookinfo/authorgroup|info/authorgroup" +              mode="titlepage.mode" priority="2"> +  <fo:block> +    <xsl:call-template name="anchor"/> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<!-- book verso --> + +<xsl:template name="book.verso.title"> +  <fo:block> +    <xsl:apply-templates mode="titlepage.mode"/> + +    <xsl:if test="following-sibling::subtitle +                  |following-sibling::info/subtitle +                  |following-sibling::bookinfo/subtitle"> +      <xsl:text>: </xsl:text> + +      <xsl:apply-templates select="(following-sibling::subtitle +                                   |following-sibling::info/subtitle +                                   |following-sibling::bookinfo/subtitle)[1]" +                           mode="book.verso.subtitle.mode"/> +    </xsl:if> +  </fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="book.verso.subtitle.mode"> +  <xsl:apply-templates mode="titlepage.mode"/> +  <xsl:if test="following-sibling::subtitle"> +    <xsl:text>: </xsl:text> +    <xsl:apply-templates select="following-sibling::subtitle[1]" +                         mode="book.verso.subtitle.mode"/> +  </xsl:if> +</xsl:template> + +<xsl:template name="verso.authorgroup"> +  <fo:block> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'by'"/> +    </xsl:call-template> +    <xsl:text> </xsl:text> +    <xsl:call-template name="person.name.list"> +      <xsl:with-param name="person.list" select="author|corpauthor|editor"/> +    </xsl:call-template> +  </fo:block> +  <xsl:apply-templates select="othercredit" mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="bookinfo/author|info/author" +              mode="titlepage.mode" priority="2"> +  <fo:block> +    <xsl:call-template name="person.name"/> +  </fo:block> +</xsl:template> + +<xsl:template match="bookinfo/corpauthor|info/corpauthor" +              mode="titlepage.mode" priority="2"> +  <fo:block> +    <xsl:apply-templates/> +  </fo:block> +</xsl:template> + +<xsl:template match="bookinfo/pubdate|info/pubdate" +              mode="titlepage.mode" priority="2"> +  <fo:block> +    <xsl:call-template name="gentext"> +      <xsl:with-param name="key" select="'published'"/> +    </xsl:call-template> +    <xsl:text> </xsl:text> +    <xsl:apply-templates mode="titlepage.mode"/> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/toc.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/toc.xsl new file mode 100644 index 0000000..3e6299b --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/toc.xsl @@ -0,0 +1,280 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: toc.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- FIXME: in the contexts where <toc> can occur, I think it's always +     the case that a page-sequence is required. Is that true? --> + +<xsl:template match="toc"> +  <xsl:variable name="master-reference"> +    <xsl:call-template name="select.pagemaster"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="*"> +      <xsl:if test="$process.source.toc != 0"> +        <!-- if the toc isn't empty, process it --> +        <fo:page-sequence hyphenate="{$hyphenate}" +                          master-reference="{$master-reference}"> +          <xsl:attribute name="language"> +            <xsl:call-template name="l10n.language"/> +          </xsl:attribute> +          <xsl:attribute name="format"> +            <xsl:call-template name="page.number.format"> +              <xsl:with-param name="element" select="'toc'"/> +              <xsl:with-param name="master-reference"  +                              select="$master-reference"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:attribute name="initial-page-number"> +            <xsl:call-template name="initial.page.number"> +              <xsl:with-param name="element" select="'toc'"/> +              <xsl:with-param name="master-reference"  +                              select="$master-reference"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:attribute name="force-page-count"> +            <xsl:call-template name="force.page.count"> +              <xsl:with-param name="master-reference"  +	                      select="$master-reference"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:attribute name="hyphenation-character"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-character'"/> +            </xsl:call-template> +          </xsl:attribute> +          <xsl:attribute name="hyphenation-push-character-count"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +            </xsl:call-template> +          </xsl:attribute> +          <xsl:attribute name="hyphenation-remain-character-count"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:apply-templates select="." mode="running.head.mode"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:apply-templates> +          <xsl:apply-templates select="." mode="running.foot.mode"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:apply-templates> + +          <fo:flow flow-name="xsl-region-body"> +            <xsl:call-template name="set.flow.properties"> +              <xsl:with-param name="element" select="local-name(.)"/> +              <xsl:with-param name="master-reference"  +                              select="$master-reference"/> +            </xsl:call-template> + +            <fo:block xsl:use-attribute-sets="toc.margin.properties"> +              <xsl:call-template name="table.of.contents.titlepage"/> +              <xsl:apply-templates/> +            </fo:block> +          </fo:flow> +        </fo:page-sequence> +      </xsl:if> +    </xsl:when> +    <xsl:otherwise> +      <xsl:if test="$process.empty.source.toc != 0"> +        <fo:page-sequence hyphenate="{$hyphenate}" +                          master-reference="{$master-reference}"> +          <xsl:attribute name="language"> +            <xsl:call-template name="l10n.language"/> +          </xsl:attribute> +          <xsl:attribute name="format"> +            <xsl:call-template name="page.number.format"> +              <xsl:with-param name="element" select="'toc'"/> +              <xsl:with-param name="master-reference"  +                              select="$master-reference"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:attribute name="initial-page-number"> +            <xsl:call-template name="initial.page.number"> +              <xsl:with-param name="element" select="'toc'"/> +              <xsl:with-param name="master-reference"  +                              select="$master-reference"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:attribute name="hyphenation-character"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-character'"/> +            </xsl:call-template> +          </xsl:attribute> +          <xsl:attribute name="hyphenation-push-character-count"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-push-character-count'"/> +            </xsl:call-template> +          </xsl:attribute> +          <xsl:attribute name="hyphenation-remain-character-count"> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'hyphenation-remain-character-count'"/> +            </xsl:call-template> +          </xsl:attribute> + +          <xsl:apply-templates select="." mode="running.head.mode"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:apply-templates> +          <xsl:apply-templates select="." mode="running.foot.mode"> +            <xsl:with-param name="master-reference" select="$master-reference"/> +          </xsl:apply-templates> + +          <fo:flow flow-name="xsl-region-body"> +            <xsl: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> +          </fo:flow> +        </fo:page-sequence> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="tocpart|tocchap +                     |toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"> +  <xsl:apply-templates select="tocentry"/> +  <xsl:if test="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"> +    <fo:block start-indent="{count(ancestor::*)*2}pc"> +      <xsl:apply-templates select="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"/> +    </fo:block> +  </xsl:if> +</xsl:template> + +<xsl:template match="tocentry|tocfront|tocback"> +  <fo:block text-align-last="justify" +            end-indent="2pc" +            last-line-end-indent="-2pc"> +    <fo:inline keep-with-next.within-line="always"> +      <xsl:choose> +        <xsl:when test="@linkend"> +          <fo:basic-link internal-destination="{@linkend}"> +            <xsl:apply-templates/> +          </fo:basic-link> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates/> +        </xsl:otherwise> +      </xsl:choose> +    </fo:inline> + +    <xsl:choose> +      <xsl:when test="@linkend"> +        <fo:inline keep-together.within-line="always"> +          <xsl:text> </xsl:text> +          <fo:leader leader-pattern="dots" +                     keep-with-next.within-line="always"/> +          <xsl:text> </xsl:text> +          <fo:basic-link internal-destination="{@linkend}"> +            <xsl:choose> +              <xsl:when test="@pagenum"> +                <xsl:value-of select="@pagenum"/> +              </xsl:when> +              <xsl:otherwise> +                <fo:page-number-citation ref-id="{@linkend}"/> +              </xsl:otherwise> +            </xsl:choose> +          </fo:basic-link> +        </fo:inline> +      </xsl:when> +      <xsl:when test="@pagenum"> +        <fo:inline keep-together.within-line="always"> +          <xsl:text> </xsl:text> +          <fo:leader leader-pattern="dots" +                     keep-with-next.within-line="always"/> +          <xsl:text> </xsl:text> +          <xsl:value-of select="@pagenum"/> +        </fo:inline> +      </xsl:when> +      <xsl:otherwise> +        <!-- just the leaders, what else can I do? --> +        <fo:inline keep-together.within-line="always"> +          <xsl:text> </xsl:text> +          <fo:leader leader-pattern="space" +                     keep-with-next.within-line="always"/> +        </fo:inline> +      </xsl:otherwise> +    </xsl:choose> +  </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" 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/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/verbatim.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/verbatim.xsl new file mode 100644 index 0000000..c677bfe --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/verbatim.xsl @@ -0,0 +1,417 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" +                xmlns:xverb="com.nwalsh.xalan.Verbatim" +                xmlns:lxslt="http://xml.apache.org/xslt" +                xmlns:exsl="http://exslt.org/common" +                exclude-result-prefixes="sverb xverb lxslt exsl" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: verbatim.xsl 8228 2007-07-21 15:00:15Z manuel $ +     ******************************************************************** + +     This 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:variable name="content"> +    <xsl:choose> +      <xsl:when test="$suppress-numbers = '0' +                      and @linenumbering = 'numbered' +                      and $use.extensions != '0' +                      and $linenumbering.extension != '0'"> +        <xsl:call-template name="number.rtf.lines"> +          <xsl:with-param name="rtf"> +	    <xsl:call-template name="apply-highlighting"/> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +	<xsl:call-template name="apply-highlighting"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$shade.verbatim != 0"> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="monospace.verbatim.properties shade.verbatim.style"> +        <xsl:choose> +          <xsl:when test="$hyphenate.verbatim != 0 and function-available('exsl:node-set')"> +            <xsl:apply-templates select="exsl:node-set($content)" mode="hyphenate.verbatim"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$content"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </xsl:when> +    <xsl:otherwise> +      <fo:block id="{$id}" +                xsl:use-attribute-sets="monospace.verbatim.properties"> +        <xsl:choose> +          <xsl:when test="$hyphenate.verbatim != 0 and function-available('exsl:node-set')"> +            <xsl:apply-templates select="exsl:node-set($content)" mode="hyphenate.verbatim"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:copy-of select="$content"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:block> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="literallayout"> +  <xsl:param name="suppress-numbers" select="'0'"/> + +  <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + +  <xsl:variable name="content"> +    <xsl:choose> +      <xsl:when test="$suppress-numbers = '0' +                      and @linenumbering = 'numbered' +                      and $use.extensions != '0' +                      and $linenumbering.extension != '0'"> +        <xsl:call-template name="number.rtf.lines"> +          <xsl:with-param name="rtf"> +            <xsl:apply-templates/> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="@class='monospaced'"> +      <xsl:choose> +        <xsl:when test="$shade.verbatim != 0"> +          <fo:block id="{$id}" +                    xsl:use-attribute-sets="monospace.verbatim.properties shade.verbatim.style"> + +            <xsl:copy-of select="$content"/> +          </fo:block> +        </xsl:when> +        <xsl:otherwise> +          <fo:block id="{$id}" +                    xsl:use-attribute-sets="monospace.verbatim.properties"> +            <xsl:copy-of select="$content"/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$shade.verbatim != 0"> +          <fo:block id="{$id}" +                    xsl:use-attribute-sets="verbatim.properties shade.verbatim.style"> +            <xsl:copy-of select="$content"/> +          </fo:block> +        </xsl:when> +        <xsl:otherwise> +          <fo:block id="{$id}" +                    xsl:use-attribute-sets="verbatim.properties"> +            <xsl:copy-of select="$content"/> +          </fo:block> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="address"> +  <xsl:param name="suppress-numbers" select="'0'"/> + +  <xsl:variable name="content"> +    <xsl:choose> +      <xsl:when test="$suppress-numbers = '0' +                      and @linenumbering = 'numbered' +                      and $use.extensions != '0' +                      and $linenumbering.extension != '0'"> +        <xsl:call-template name="number.rtf.lines"> +          <xsl:with-param name="rtf"> +            <xsl:apply-templates/> +          </xsl:with-param> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <fo:block xsl:use-attribute-sets="verbatim.properties"> +    <xsl:copy-of select="$content"/> +  </fo:block> +</xsl:template> + +<xsl:template name="number.rtf.lines"> +  <xsl:param name="rtf" select="''"/> +  <xsl:param name="pi.context" select="."/> + +  <!-- Save the global values --> +  <xsl:variable name="global.linenumbering.everyNth" +                select="$linenumbering.everyNth"/> + +  <xsl:variable name="global.linenumbering.separator" +                select="$linenumbering.separator"/> + +  <xsl:variable name="global.linenumbering.width" +                select="$linenumbering.width"/> + +  <!-- Extract the <?dbfo linenumbering.*?> PI values --> +  <xsl:variable name="pi.linenumbering.everyNth"> +    <xsl:call-template name="pi.dbfo_linenumbering.everyNth"> +      <xsl:with-param name="node" select="$pi.context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="pi.linenumbering.separator"> +    <xsl:call-template name="pi.dbfo_linenumbering.separator"> +      <xsl:with-param name="node" select="$pi.context"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="pi.linenumbering.width"> +    <xsl:call-template name="pi.dbfo_linenumbering.width"> +      <xsl:with-param name="node" select="$pi.context"/> +    </xsl:call-template> +  </xsl:variable> + +  <!-- Construct the 'in-context' values --> +  <xsl:variable name="linenumbering.everyNth"> +    <xsl:choose> +      <xsl:when test="$pi.linenumbering.everyNth != ''"> +        <xsl:value-of select="$pi.linenumbering.everyNth"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$global.linenumbering.everyNth"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="linenumbering.separator"> +    <xsl:choose> +      <xsl:when test="$pi.linenumbering.separator != ''"> +        <xsl:value-of select="$pi.linenumbering.separator"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$global.linenumbering.separator"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="linenumbering.width"> +    <xsl:choose> +      <xsl:when test="$pi.linenumbering.width != ''"> +        <xsl:value-of select="$pi.linenumbering.width"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$global.linenumbering.width"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="linenumbering.startinglinenumber"> +    <xsl:choose> +      <xsl:when test="$pi.context/@startinglinenumber"> +        <xsl:value-of select="$pi.context/@startinglinenumber"/> +      </xsl:when> +      <xsl:when test="$pi.context/@continuation='continues'"> +        <xsl:variable name="lastLine"> +          <xsl:choose> +            <xsl:when test="$pi.context/self::programlisting"> +              <xsl:call-template name="lastLineNumber"> +                <xsl:with-param name="listings" +                     select="preceding::programlisting[@linenumbering='numbered']"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="$pi.context/self::screen"> +              <xsl:call-template name="lastLineNumber"> +                <xsl:with-param name="listings" +                     select="preceding::screen[@linenumbering='numbered']"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="$pi.context/self::literallayout"> +              <xsl:call-template name="lastLineNumber"> +                <xsl:with-param name="listings" +                     select="preceding::literallayout[@linenumbering='numbered']"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="$pi.context/self::address"> +              <xsl:call-template name="lastLineNumber"> +                <xsl:with-param name="listings" +                     select="preceding::address[@linenumbering='numbered']"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:when test="$pi.context/self::synopsis"> +              <xsl:call-template name="lastLineNumber"> +                <xsl:with-param name="listings" +                     select="preceding::synopsis[@linenumbering='numbered']"/> +              </xsl:call-template> +            </xsl:when> +            <xsl:otherwise> +              <xsl:message> +                <xsl:text>Unexpected verbatim environment: </xsl:text> +                <xsl:value-of select="local-name(.)"/> +              </xsl:message> +              <xsl:value-of select="0"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:variable> + +        <xsl:value-of select="$lastLine + 1"/> +      </xsl:when> +      <xsl:otherwise>1</xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="function-available('sverb:numberLines')"> +      <xsl:copy-of select="sverb:numberLines($rtf)"/> +    </xsl:when> +    <xsl:when test="function-available('xverb:numberLines')"> +      <xsl:copy-of select="xverb:numberLines($rtf)"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message terminate="yes"> +        <xsl:text>No numberLines function available.</xsl:text> +      </xsl:message> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ======================================================================== --> + +<xsl:template name="lastLineNumber"> +  <xsl:param name="listings"/> +  <xsl:param name="number" select="0"/> + +  <xsl:variable name="lines"> +    <xsl:call-template name="countLines"> +      <xsl:with-param name="listing" select="string($listings[1])"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="not($listings)"> +      <xsl:value-of select="$number"/> +    </xsl:when> +    <xsl:when test="$listings[1]/@startinglinenumber"> +      <xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/> +    </xsl:when> +    <xsl:when test="$listings[1]/@continuation='continues'"> +      <xsl:call-template name="lastLineNumber"> +        <xsl:with-param name="listings" select="listings[position() > 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, '
')"> +      <xsl:call-template name="countLines"> +        <xsl:with-param name="listing" select="substring-after($listing, '
')"/> +        <xsl:with-param name="count" select="$count + 1"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$count"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<!-- ======================================================================== --> + +<xsl:template match="node()|@*" mode="hyphenate.verbatim"> +  <xsl:copy> +    <xsl:copy-of select="@*"/> +    <xsl:apply-templates mode="hyphenate.verbatim"/> +  </xsl:copy> +</xsl:template> + +<xsl:template match="text()" mode="hyphenate.verbatim" priority="2"> +  <xsl:call-template name="hyphenate.verbatim.block"> +    <xsl:with-param name="content" select="."/> +  </xsl:call-template> +</xsl:template> + +<xsl:template name="hyphenate.verbatim.block"> +  <xsl:param name="content" select="''"/> +  <xsl:param name="count" select="1"/> + +  <!-- recurse on lines first to keep recursion depth reasonable --> +  <xsl:choose> +    <xsl:when test="contains($content, '
')"> +      <xsl:variable name="line" select="substring-before($content, '
')"/> +      <xsl:variable name="rest" select="substring-after($content, '
')"/> +      <xsl:call-template name="hyphenate.verbatim"> +        <xsl:with-param name="content" select="concat($line, '
')"/> +      </xsl:call-template> +      <xsl:call-template name="hyphenate.verbatim.block"> +        <xsl:with-param name="content" select="$rest"/> +        <xsl:with-param name="count" select="$count + 1"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:call-template name="hyphenate.verbatim"> +        <xsl:with-param name="content" select="$content"/> +      </xsl:call-template> +    </xsl:otherwise> +  </xsl:choose> +   +</xsl:template> + +<xsl:template name="hyphenate.verbatim"> +  <xsl:param name="content"/> +  <xsl:variable name="head" select="substring($content, 1, 1)"/> +  <xsl:variable name="tail" select="substring($content, 2)"/> +  <xsl:choose> +    <!-- Place soft-hyphen after space or non-breakable space. --> +    <xsl:when test="$head = ' ' or $head = ' '"> +      <xsl:text> </xsl:text> +      <xsl:text>­</xsl:text> +    </xsl:when> +    <xsl:when test="$hyphenate.verbatim.characters != '' and +                    translate($head, $hyphenate.verbatim.characters, '') = '' and not($tail = '')"> +      <xsl:value-of select="$head"/> +      <xsl:text>­</xsl:text> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$head"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:if test="$tail"> +    <xsl:call-template name="hyphenate.verbatim"> +      <xsl:with-param name="content" select="$tail"/> +    </xsl:call-template> +  </xsl:if> +</xsl:template> + + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/xep.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/xep.xsl new file mode 100644 index 0000000..0fdfef8 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/xep.xsl @@ -0,0 +1,180 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:rx="http://www.renderx.com/XSL/Extensions" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: xep.xsl 8196 2007-07-05 21:18:33Z manuel $ +     ******************************************************************** +     (c) Stephane Bline Peregrine Systems 2001 +     Implementation of xep extensions: +       * Pdf bookmarks (based on the XEP 2.5 implementation) +       * Document information (XEP 2.5 meta information extensions) +     ******************************************************************** --> + +<!-- FIXME: Norm, I changed things so that the top-level element (book or set) +     does not appear in the TOC. Is this the right thing? --> + +<xsl:template name="xep-document-information"> +  <rx:meta-info> +    <xsl:variable name="authors"  +                  select="(//author|//editor|//corpauthor|//authorgroup)[1]"/> +    <xsl:if test="$authors"> +      <xsl:variable name="author"> +        <xsl:choose> +          <xsl:when test="$authors[self::authorgroup]"> +            <xsl:call-template name="person.name.list"> +              <xsl:with-param name="person.list"  +                        select="$authors/*[self::author|self::corpauthor| +                               self::othercredit|self::editor]"/> +            </xsl:call-template> +          </xsl:when> +          <xsl:when test="$authors[self::corpauthor]"> +            <xsl:value-of select="$authors"/> +          </xsl:when> +          <xsl:otherwise> +            <xsl:call-template name="person.name"> +              <xsl:with-param name="node" select="$authors"/> +            </xsl:call-template> +          </xsl:otherwise> +        </xsl:choose> +      </xsl:variable> +      <xsl:element name="rx:meta-field"> +        <xsl:attribute name="name">author</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:value-of select="normalize-space($author)"/> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> + +    <xsl:variable name="title"> +      <xsl:apply-templates select="/*[1]" mode="label.markup"/> +      <xsl:apply-templates select="/*[1]" mode="title.markup"/> +    </xsl:variable> + +    <xsl:element name="rx:meta-field"> +      <xsl:attribute name="name">creator</xsl:attribute> +      <xsl:attribute name="value"> +        <xsl:text>DocBook </xsl:text> +        <xsl:value-of select="$DistroTitle"/> +        <xsl:text> V</xsl:text> +        <xsl:value-of select="$VERSION"/> +      </xsl:attribute> +    </xsl:element> + +    <xsl:element name="rx:meta-field"> +      <xsl:attribute name="name">title</xsl:attribute> +      <xsl:attribute name="value"> +        <xsl:value-of select="normalize-space($title)"/> +      </xsl:attribute> +    </xsl:element> + +    <xsl:if test="//keyword"> +      <xsl:element name="rx:meta-field"> +        <xsl:attribute name="name">keywords</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:for-each select="//keyword"> +            <xsl:value-of select="normalize-space(.)"/> +            <xsl:if test="position() != last()"> +              <xsl:text>, </xsl:text> +            </xsl:if> +          </xsl:for-each> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> + +    <xsl:if test="//subjectterm"> +      <xsl:element name="rx:meta-field"> +        <xsl:attribute name="name">subject</xsl:attribute> +        <xsl:attribute name="value"> +          <xsl:for-each select="//subjectterm"> +            <xsl:value-of select="normalize-space(.)"/> +            <xsl:if test="position() != last()"> +              <xsl:text>, </xsl:text> +            </xsl:if> +          </xsl:for-each> +        </xsl:attribute> +      </xsl:element> +    </xsl:if> +  </rx:meta-info> +</xsl:template> + +<!-- ******************************************************************** +     Pdf bookmarks +     ******************************************************************** --> + +<xsl:template match="*" mode="xep.outline"> +  <xsl:apply-templates select="*" mode="xep.outline"/> +</xsl:template> + +<xsl:template match="set|book|part|reference|preface|chapter|appendix|article +                     |glossary|bibliography|index|setindex +                     |refentry|refsynopsisdiv +                     |refsect1|refsect2|refsect3|refsection +                     |sect1|sect2|sect3|sect4|sect5|section" +              mode="xep.outline"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <xsl:variable name="bookmark-label"> +    <xsl:apply-templates select="." mode="object.title.markup"/> +  </xsl:variable> + +  <!-- Put the root element bookmark at the same level as its children --> +  <!-- If the object is a set or book, generate a bookmark for the toc --> + +  <xsl:choose> +    <xsl:when test="parent::*"> +      <rx:bookmark internal-destination="{$id}"> +        <rx:bookmark-label> +          <xsl:value-of select="normalize-space($bookmark-label)"/> +        </rx:bookmark-label> +        <xsl:apply-templates select="*" mode="xep.outline"/> +      </rx:bookmark> +    </xsl:when> +    <xsl:otherwise> +      <xsl:if test="$bookmark-label != ''"> +        <rx:bookmark internal-destination="{$id}"> +          <rx:bookmark-label> +            <xsl:value-of select="normalize-space($bookmark-label)"/> +          </rx:bookmark-label> +        </rx:bookmark> +      </xsl:if> + +      <xsl:variable name="toc.params"> +        <xsl:call-template name="find.path.params"> +          <xsl:with-param name="table" select="normalize-space($generate.toc)"/> +        </xsl:call-template> +      </xsl:variable> +      <xsl:if test="contains($toc.params, 'toc') +                    and set|book|part|reference|section|sect1|refentry +                        |article|bibliography|glossary|chapter +                        |appendix"> +        <rx:bookmark internal-destination="toc...{$id}"> +          <rx:bookmark-label> +            <xsl:call-template name="gentext"> +              <xsl:with-param name="key" select="'TableofContents'"/> +            </xsl:call-template> +          </rx:bookmark-label> +        </rx:bookmark> +      </xsl:if> +      <xsl:apply-templates select="*" mode="xep.outline"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="xep-pis"> +  <xsl:if test="$crop.marks != 0"> +    <xsl:processing-instruction name="xep-pdf-crop-mark-width"><xsl:value-of select="$crop.mark.width"/></xsl:processing-instruction> +    <xsl:processing-instruction name="xep-pdf-crop-offset"><xsl:value-of select="$crop.mark.offset"/></xsl:processing-instruction> +    <xsl:processing-instruction name="xep-pdf-bleed"><xsl:value-of select="$crop.mark.bleed"/></xsl:processing-instruction> +  </xsl:if> + +  <xsl:call-template name="user-xep-pis"/> +</xsl:template> + +<!-- Placeholder for user defined PIs --> +<xsl:template name="user-xep-pis"/> + +</xsl:stylesheet> diff --git a/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/xref.xsl b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/xref.xsl new file mode 100644 index 0000000..83c7956 --- /dev/null +++ b/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/xref.xsl @@ -0,0 +1,1440 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +                xmlns:fo="http://www.w3.org/1999/XSL/Format" +                xmlns:exsl="http://exslt.org/common" +                xmlns:xlink='http://www.w3.org/1999/xlink' +                exclude-result-prefixes="exsl" +                version='1.0'> + +<!-- ******************************************************************** +     $Id: xref.xsl 8228 2007-07-21 15:00:15Z manuel $ +     ******************************************************************** + +     This file is part of the XSL DocBook Stylesheet distribution. +     See ../README or http://docbook.sf.net/release/xsl/current/ for +     copyright and other information. + +     ******************************************************************** --> + +<!-- Use internal variable for olink xlink role for consistency --> +<xsl:variable  +      name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable> + +<!-- ==================================================================== --> + +<xsl:template match="anchor"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:inline id="{$id}"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="xref" name="xref"> +  <xsl:param name="xhref" select="@xlink:href"/> +  <!-- is the @xlink:href a local idref link? --> +  <xsl:param name="xlink.idref"> +    <xsl:if test="starts-with($xhref,'#') +                  and (not(contains($xhref,'(')) +                  or starts-with($xhref, '#xpointer(id('))"> +      <xsl:call-template name="xpointer.idref"> +        <xsl:with-param name="xpointer" select="$xhref"/> +      </xsl:call-template> +   </xsl:if> +  </xsl:param> +  <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/> +  <xsl:param name="linkend.targets" select="key('id',@linkend)"/> +  <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/> +  <xsl:param name="refelem" select="local-name($target)"/> + +  <xsl:variable name="xrefstyle"> +    <xsl:choose> +      <xsl:when test="@role and not(@xrefstyle)  +                      and $use.role.as.xrefstyle != 0"> +        <xsl:value-of select="@role"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="@xrefstyle"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="content"> +    <fo:inline xsl:use-attribute-sets="xref.properties"> +      <xsl:choose> +        <xsl:when test="@endterm"> +          <xsl:variable name="etargets" select="key('id',@endterm)"/> +          <xsl:variable name="etarget" select="$etargets[1]"/> +          <xsl:choose> +            <xsl:when test="count($etarget) = 0"> +              <xsl:message> +                <xsl:value-of select="count($etargets)"/> +                <xsl:text>Endterm points to nonexistent ID: </xsl:text> +                <xsl:value-of select="@endterm"/> +              </xsl:message> +              <xsl:text>???</xsl:text> +            </xsl:when> +            <xsl:otherwise> +              <xsl:apply-templates select="$etarget" mode="endterm"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +   +        <xsl:when test="$target/@xreflabel"> +          <xsl:call-template name="xref.xreflabel"> +            <xsl:with-param name="target" select="$target"/> +          </xsl:call-template> +        </xsl:when> +   +        <xsl:when test="$target"> +          <xsl:if test="not(parent::citation)"> +            <xsl:apply-templates select="$target" mode="xref-to-prefix"/> +          </xsl:if> +   +          <xsl:apply-templates select="$target" mode="xref-to"> +            <xsl:with-param name="referrer" select="."/> +            <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +          </xsl:apply-templates> +   +          <xsl:if test="not(parent::citation)"> +            <xsl:apply-templates select="$target" mode="xref-to-suffix"/> +          </xsl:if> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message> +            <xsl:text>ERROR: xref linking to </xsl:text> +            <xsl:value-of select="@linkend|@xlink:href"/> +            <xsl:text> has no generated link text.</xsl:text> +          </xsl:message> +          <xsl:text>???</xsl:text> +        </xsl:otherwise> +      </xsl:choose> +    </fo:inline> +  </xsl:variable> + +  <!-- Convert it into an active link --> +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="content" select="$content"/> +  </xsl:call-template> + +  <!-- Add standard page reference? --> +  <xsl:choose> +    <xsl:when test="not($target)"> +      <!-- page numbers only for local targets --> +    </xsl:when> +    <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')  +                  and contains($xrefstyle, 'nopage')"> +      <!-- negative xrefstyle in instance turns it off --> +    </xsl:when> +    <!-- positive xrefstyle already handles it --> +    <xsl:when test="not(starts-with(normalize-space($xrefstyle), 'select:')  +                  and (contains($xrefstyle, 'page') +                       or contains($xrefstyle, 'Page'))) +                  and ( $insert.xref.page.number = 'yes'  +                     or $insert.xref.page.number = '1') +                  or local-name($target) = 'para'"> +      <xsl:apply-templates select="$target" mode="page.citation"> +        <xsl:with-param name="id" select="$target/@id|$target/@xml:id"/> +      </xsl:apply-templates> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- Handled largely like an xref --> +<!-- To be done: add support for begin, end, and units attributes --> +<xsl:template match="biblioref" name="biblioref"> +  <xsl:variable name="targets" select="key('id',@linkend)"/> +  <xsl:variable name="target" select="$targets[1]"/> +  <xsl:variable name="refelem" select="local-name($target)"/> + +  <xsl:call-template name="check.id.unique"> +    <xsl:with-param name="linkend" select="@linkend"/> +  </xsl:call-template> + +  <xsl:choose> +    <xsl:when test="$refelem=''"> +      <xsl:message> +        <xsl:text>XRef to nonexistent id: </xsl:text> +        <xsl:value-of select="@linkend"/> +      </xsl:message> +      <xsl:text>???</xsl:text> +    </xsl:when> + +    <xsl:when test="@endterm"> +      <fo:basic-link internal-destination="{@linkend}" +                     xsl:use-attribute-sets="xref.properties"> +        <xsl:variable name="etargets" select="key('id',@endterm)"/> +        <xsl:variable name="etarget" select="$etargets[1]"/> +        <xsl:choose> +          <xsl:when test="count($etarget) = 0"> +            <xsl:message> +              <xsl:value-of select="count($etargets)"/> +              <xsl:text>Endterm points to nonexistent ID: </xsl:text> +              <xsl:value-of select="@endterm"/> +            </xsl:message> +            <xsl:text>???</xsl:text> +          </xsl:when> +          <xsl:otherwise> +            <xsl:apply-templates select="$etarget" mode="endterm"/> +          </xsl:otherwise> +        </xsl:choose> +      </fo:basic-link> +    </xsl:when> + +    <xsl:when test="$target/@xreflabel"> +      <fo:basic-link internal-destination="{@linkend}" +                     xsl:use-attribute-sets="xref.properties"> +        <xsl:call-template name="xref.xreflabel"> +          <xsl:with-param name="target" select="$target"/> +        </xsl:call-template> +      </fo:basic-link> +    </xsl:when> + +    <xsl:otherwise> +      <xsl:if test="not(parent::citation)"> +        <xsl:apply-templates select="$target" mode="xref-to-prefix"/> +      </xsl:if> + +      <fo:basic-link internal-destination="{@linkend}" +                     xsl:use-attribute-sets="xref.properties"> +        <xsl:apply-templates select="$target" mode="xref-to"> +          <xsl:with-param name="referrer" select="."/> +          <xsl:with-param name="xrefstyle"> +            <xsl:choose> +              <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0"> +                <xsl:value-of select="@role"/> +              </xsl:when> +              <xsl:otherwise> +                <xsl:value-of select="@xrefstyle"/> +              </xsl:otherwise> +            </xsl:choose> +          </xsl:with-param> +        </xsl:apply-templates> +      </fo:basic-link> + +      <xsl:if test="not(parent::citation)"> +        <xsl:apply-templates select="$target" mode="xref-to-suffix"/> +      </xsl:if> +    </xsl:otherwise> +  </xsl:choose> + +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="endterm"> +  <!-- Process the children of the endterm element --> +  <xsl:variable name="endterm"> +    <xsl:apply-templates select="child::node()"/> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="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:copy> +    <xsl:for-each select="@*"> +      <xsl:choose> +        <xsl:when test="name(.) != 'id'"> +          <xsl:copy/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message>removing <xsl:value-of select="name(.)"/></xsl:message> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:for-each> +    <xsl:apply-templates mode="remove-ids"/> +  </xsl:copy> +</xsl:template> + +<!--- ==================================================================== --> + +<xsl:template match="*" mode="xref-to-prefix"/> +<xsl:template match="*" mode="xref-to-suffix"/> + +<xsl:template match="*" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + + +  <xsl:if test="$verbose != 0"> +    <xsl:message> +      <xsl:text>Don't know what gentext to create for xref to: "</xsl:text> +      <xsl:value-of select="name(.)"/> +      <xsl:text>"</xsl:text> +    </xsl:message> +    <xsl:text>???</xsl:text> +  </xsl:if> +</xsl:template> + +<xsl:template match="title" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <!-- if you xref to a title, xref to the parent... --> +  <xsl:choose> +    <!-- FIXME: how reliable is this? --> +    <xsl:when test="contains(local-name(parent::*), 'info')"> +      <xsl:apply-templates select="parent::*[2]" mode="xref-to"> +        <xsl:with-param name="referrer" select="$referrer"/> +        <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +        <xsl:with-param name="verbose" select="$verbose"/> +      </xsl:apply-templates> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="parent::*" mode="xref-to"> +        <xsl:with-param name="referrer" select="$referrer"/> +        <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +        <xsl:with-param name="verbose" select="$verbose"/> +      </xsl:apply-templates> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="abstract|article|authorblurb|bibliodiv|bibliomset +                     |biblioset|blockquote|calloutlist|caution|colophon +                     |constraintdef|formalpara|glossdiv|important|indexdiv +                     |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain +                     |msgrel|msgset|msgsub|note|orderedlist|partintro +                     |productionset|qandadiv|refsynopsisdiv|segmentedlist +                     |set|setindex|sidebar|tip|toc|variablelist|warning" +              mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <!-- catch-all for things with (possibly optional) titles --> +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="author|editor|othercredit|personname" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:call-template name="person.name"/> +</xsl:template> + +<xsl:template match="authorgroup" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:call-template name="person.name.list"/> +</xsl:template> + +<xsl:template match="figure|example|table|equation" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="procedure" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="task" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="cmdsynopsis" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="(.//command)[1]" mode="xref"/> +</xsl:template> + +<xsl:template match="funcsynopsis" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="(.//function)[1]" mode="xref"/> +</xsl:template> + +<xsl:template match="dedication|preface|chapter|appendix" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="bibliography" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to-prefix"> +  <xsl:text>[</xsl:text> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to-suffix"> +  <xsl:text>]</xsl:text> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <!-- handles both biblioentry and bibliomixed --> +  <xsl:choose> +    <xsl:when test="string(.) = ''"> +      <xsl:variable name="bib" select="document($bibliography.collection,.)"/> +      <xsl:variable name="id" select="(@id|@xml:id)[1]"/> +      <xsl:variable name="entry" select="$bib/bibliography/ +                                         *[@id=$id or @xml:id=$id][1]"/> +      <xsl:choose> +        <xsl:when test="$entry"> +          <xsl:choose> +            <xsl:when test="$bibliography.numbered != 0"> +              <xsl:number from="bibliography" count="biblioentry|bibliomixed" +                          level="any" format="1"/> +            </xsl:when> +            <xsl:when test="local-name($entry/*[1]) = 'abbrev'"> +              <xsl:apply-templates select="$entry/*[1]"/> +            </xsl:when> +            <xsl:otherwise> +              <xsl:value-of select="(@id|@xml:id)[1]"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +          <xsl:message> +            <xsl:text>No bibliography entry: </xsl:text> +            <xsl:value-of select="$id"/> +            <xsl:text> found in </xsl:text> +            <xsl:value-of select="$bibliography.collection"/> +          </xsl:message> +          <xsl:value-of select="(@id|@xml:id)[1]"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:choose> +        <xsl:when test="$bibliography.numbered != 0"> +          <xsl:number from="bibliography" count="biblioentry|bibliomixed" +                      level="any" format="1"/> +        </xsl:when> +        <xsl:when test="local-name(*[1]) = 'abbrev'"> +          <xsl:apply-templates select="*[1]"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:value-of select="(@id|@xml:id)[1]"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="glossary" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="glossentry" mode="xref-to"> +  <xsl:choose> +    <xsl:when test="$glossentry.show.acronym = 'primary'"> +      <xsl:choose> +        <xsl:when test="acronym|abbrev"> +          <xsl:apply-templates select="(acronym|abbrev)[1]"/> +        </xsl:when> +        <xsl:otherwise> +          <xsl:apply-templates select="glossterm[1]" mode="xref-to"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="glossterm[1]" mode="xref-to"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="glossterm" mode="xref-to"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="index" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="listitem" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="section|simplesect +                     |sect1|sect2|sect3|sect4|sect5 +                     |refsect1|refsect2|refsect3|refsection" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +  <!-- What about "in Chapter X"? --> +</xsl:template> + +<xsl:template match="bridgehead" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +  <!-- What about "in Chapter X"? --> +</xsl:template> + +<xsl:template match="qandaset" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="qandadiv" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="qandaentry" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="question[1]" mode="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:param name="verbose" select="1"/> + +  <xsl:choose> +    <xsl:when test="refmeta/refentrytitle"> +      <xsl:apply-templates select="refmeta/refentrytitle"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:apply-templates select="refnamediv/refname[1]"/> +    </xsl:otherwise> +  </xsl:choose> +  <xsl:apply-templates select="refmeta/manvolnum"/> +</xsl:template> + +<xsl:template match="refnamediv" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="refname[1]" mode="xref-to"> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="refname" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates mode="xref-to"> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="step" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:call-template name="gentext"> +    <xsl:with-param name="key" select="'Step'"/> +  </xsl:call-template> +  <xsl:text> </xsl:text> +  <xsl:apply-templates select="." mode="number"/> +</xsl:template> + +<xsl:template match="varlistentry" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="term[1]" mode="xref-to"> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="varlistentry/term" mode="xref-to"> +  <xsl:param name="verbose" select="1"/> +  <!-- to avoid the comma that will be generated if there are several terms --> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="co" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="callout-bug"/> +</xsl:template> + +<xsl:template match="area|areaset" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> + +  <xsl:call-template name="callout-bug"> +    <xsl:with-param name="conum"> +      <xsl:apply-templates select="." mode="conumber"/> +    </xsl:with-param> +  </xsl:call-template> +</xsl:template> + +<xsl:template match="book" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose" select="1"/> + +  <xsl:apply-templates select="." mode="object.xref.markup"> +    <xsl:with-param name="purpose" select="'xref'"/> +    <xsl:with-param name="xrefstyle" select="$xrefstyle"/> +    <xsl:with-param name="referrer" select="$referrer"/> +    <xsl:with-param name="verbose" select="$verbose"/> +  </xsl:apply-templates> +</xsl:template> + +<xsl:template match="para" mode="xref-to"> +  <xsl:param name="referrer"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="verbose"/> + +  <xsl:variable name="context" select="(ancestor::simplesect +                                       |ancestor::section +                                       |ancestor::sect1 +                                       |ancestor::sect2 +                                       |ancestor::sect3 +                                       |ancestor::sect4 +                                       |ancestor::sect5 +                                       |ancestor::refsection +                                       |ancestor::refsect1 +                                       |ancestor::refsect2 +                                       |ancestor::refsect3 +                                       |ancestor::chapter +                                       |ancestor::appendix +                                       |ancestor::preface +                                       |ancestor::partintro +                                       |ancestor::dedication +                                       |ancestor::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="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="link" name="link"> +  <xsl:param name="linkend" select="@linkend"/> +  <xsl:param name="targets" select="key('id',$linkend)"/> +  <xsl:param name="target" select="$targets[1]"/> + +  <xsl:variable name="xrefstyle"> +    <xsl:choose> +      <xsl:when test="@role and not(@xrefstyle)  +                      and $use.role.as.xrefstyle != 0"> +        <xsl:value-of select="@role"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="@xrefstyle"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:variable name="content"> +    <fo:inline xsl:use-attribute-sets="xref.properties"> +      <xsl:choose> +        <xsl:when test="count(child::node()) > 0"> +          <!-- If it has content, use it --> +          <xsl:apply-templates/> +        </xsl:when> +        <!-- look for an endterm --> +        <xsl:when test="@endterm"> +          <xsl:variable name="etargets" select="key('id',@endterm)"/> +          <xsl:variable name="etarget" select="$etargets[1]"/> +          <xsl:choose> +            <xsl:when test="count($etarget) = 0"> +              <xsl:message> +                <xsl:value-of select="count($etargets)"/> +                <xsl:text>Endterm points to nonexistent ID: </xsl:text> +                <xsl:value-of select="@endterm"/> +              </xsl:message> +              <xsl:text>???</xsl:text> +            </xsl:when> +            <xsl:otherwise> +                <xsl:apply-templates select="$etarget" mode="endterm"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <!-- Use the xlink:href if no other text --> +        <xsl:when test="@xlink:href"> +          <xsl: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="$target"/> +          </xsl:message> +          <xsl:text>???</xsl:text> +        </xsl:otherwise> +      </xsl:choose> +    </fo:inline> +  </xsl:variable> + +  <xsl:call-template name="simple.xlink"> +    <xsl:with-param name="node" select="."/> +    <xsl:with-param name="linkend" select="$linkend"/> +    <xsl:with-param name="content" select="$content"/> +  </xsl:call-template> + +  <!-- Add standard page reference? --> +  <xsl:choose> +    <!-- page numbering on link only enabled for @linkend --> +    <!-- There is no link element in DB5 with xlink:href --> +    <xsl:when test="not($linkend)"> +    </xsl:when> +    <!-- negative xrefstyle in instance turns it off --> +    <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')  +                  and contains($xrefstyle, 'nopage')"> +    </xsl:when> +    <xsl:when test="(starts-with(normalize-space($xrefstyle), 'select:')  +                  and $insert.link.page.number = 'maybe'   +                  and (contains($xrefstyle, 'page') +                       or contains($xrefstyle, 'Page'))) +                  or ( $insert.link.page.number = 'yes'  +                     or $insert.link.page.number = '1') +                  or local-name($target) = 'para'"> +      <xsl:apply-templates select="$target" mode="page.citation"> +        <xsl:with-param name="id" select="$linkend"/> +      </xsl:apply-templates> +    </xsl:when> +  </xsl:choose> +</xsl:template> + +<xsl:template match="ulink" name="ulink"> +  <xsl:param name="url" select="@url"/> + +  <xsl:variable name ="ulink.url"> +    <xsl:call-template name="fo-external-image"> +      <xsl:with-param name="filename" select="$url"/> +    </xsl:call-template> +  </xsl:variable> + +  <fo:basic-link xsl:use-attribute-sets="xref.properties" +                 external-destination="{$ulink.url}"> +    <xsl:choose> +      <xsl:when test="count(child::node())=0"> +        <xsl:call-template name="hyphenate-url"> +          <xsl:with-param name="url" select="$url"/> +        </xsl:call-template> +      </xsl:when> +      <xsl:otherwise> +        <xsl:apply-templates/> +      </xsl:otherwise> +    </xsl:choose> +  </fo:basic-link> + +  <xsl:if test="count(child::node()) != 0 +                and string(.) != $url +                and $ulink.show != 0"> +    <!-- yes, show the URI --> +    <xsl:choose> +      <xsl:when test="$ulink.footnotes != 0 and not(ancestor::footnote)"> +        <fo:footnote> +          <xsl:call-template name="ulink.footnote.number"/> +          <fo:footnote-body xsl:use-attribute-sets="footnote.properties"> +            <fo:block> +              <xsl:call-template name="ulink.footnote.number"/> +              <xsl:text> </xsl:text> +              <fo:basic-link external-destination="{$ulink.url}"> +                <xsl:value-of select="$url"/> +              </fo:basic-link> +            </fo:block> +          </fo:footnote-body> +        </fo:footnote> +      </xsl:when> +      <xsl:otherwise> +        <fo:inline hyphenate="false"> +          <xsl:text> [</xsl:text> +          <fo:basic-link external-destination="{$ulink.url}"> +            <xsl:call-template name="hyphenate-url"> +              <xsl:with-param name="url" select="$url"/> +            </xsl:call-template> +          </fo:basic-link> +          <xsl:text>]</xsl:text> +        </fo:inline> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:if> + +</xsl:template> + +<xsl:template name="ulink.footnote.number"> +  <fo:inline xsl:use-attribute-sets="footnote.mark.properties"> +    <xsl:choose> +      <xsl:when test="$fop.extensions != 0"> +        <xsl:attribute name="vertical-align">super</xsl:attribute> +      </xsl:when> +      <xsl:otherwise> +        <xsl:attribute name="baseline-shift">super</xsl:attribute> +      </xsl:otherwise> +    </xsl:choose> +    <xsl:variable name="fnum"> +      <!-- FIXME: list in @from is probably not complete --> +      <xsl:number level="any"  +                  from="chapter|appendix|preface|article|refentry|bibliography[not(parent::article)]"  +                  count="footnote[not(@label)][not(ancestor::tgroup)]|ulink[node()][@url != .][not(ancestor::footnote)]"  +                  format="1"/> +    </xsl:variable> +    <xsl:choose> +      <xsl:when test="string-length($footnote.number.symbols) >= $fnum"> +        <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:number value="$fnum" format="{$footnote.number.format}"/> +      </xsl:otherwise> +    </xsl:choose> +  </fo:inline> +</xsl:template> + +<xsl:template name="hyphenate-url"> +  <xsl:param name="url" select="''"/> +  <xsl:choose> +    <xsl:when test="$ulink.hyphenate = ''"> +      <xsl:value-of select="$url"/> +    </xsl:when> +    <xsl:when test="string-length($url) > 1"> +      <xsl:variable name="char" select="substring($url, 1, 1)"/> +      <xsl:value-of select="$char"/> +      <xsl:if test="contains($ulink.hyphenate.chars, $char)"> +        <!-- Do not hyphen in-between // --> +        <xsl:if test="not($char = '/' and substring($url,2,1) = '/')"> +          <xsl:copy-of select="$ulink.hyphenate"/> +        </xsl:if> +      </xsl:if> +      <!-- recurse to the next character --> +      <xsl:call-template name="hyphenate-url"> +        <xsl:with-param name="url" select="substring($url, 2)"/> +      </xsl:call-template> +    </xsl:when> +    <xsl:otherwise> +      <xsl:value-of select="$url"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="olink" name="olink"> +  <!-- olink content may be passed in from xlink olink --> +  <xsl:param name="content" select="NOTANELEMENT"/> + +  <xsl: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 is '</xsl:text> +          <xsl:value-of select="local-name($target.database/*[1])"/> +          <xsl:text>'.</xsl:text> +        </xsl:message> +      </xsl:if> +     +      <xsl:variable name="olink.key"> +        <xsl:call-template name="select.olink.key"> +          <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> +          <xsl:with-param name="targetptr.att" select="$targetptr.att"/> +          <xsl:with-param name="olink.lang" select="$olink.lang"/> +          <xsl:with-param name="target.database" select="$target.database"/> +        </xsl:call-template> +      </xsl:variable> +     +      <xsl:if test="string-length($olink.key) = 0"> +        <xsl:message> +          <xsl:text>Error: unresolved olink: </xsl:text> +          <xsl:text>targetdoc/targetptr = '</xsl:text> +          <xsl:value-of select="$targetdoc.att"/> +          <xsl:text>/</xsl:text> +          <xsl:value-of select="$targetptr.att"/> +          <xsl:text>'.</xsl:text> +        </xsl:message> +      </xsl:if> + +      <xsl:variable name="href"> +        <xsl:call-template name="make.olink.href"> +          <xsl:with-param name="olink.key" select="$olink.key"/> +          <xsl:with-param name="target.database" select="$target.database"/> +        </xsl:call-template> +      </xsl:variable> + +      <!-- Olink that points to internal id can be a link --> +      <xsl:variable name="linkend"> +        <xsl:call-template name="olink.as.linkend"> +          <xsl:with-param name="olink.key" select="$olink.key"/> +          <xsl:with-param name="olink.lang" select="$olink.lang"/> +          <xsl:with-param name="target.database" select="$target.database"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:variable name="hottext"> +        <xsl:choose> +          <xsl:when test="$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:with-param name="linkend" select="$linkend"/> +        </xsl:call-template> +      </xsl:variable> + +      <xsl:choose> +        <xsl:when test="$linkend != ''"> +          <fo:basic-link internal-destination="{$linkend}" +                       xsl:use-attribute-sets="xref.properties"> +            <xsl:copy-of select="$hottext"/> +            <xsl:copy-of select="$olink.page.citation"/> +          </fo:basic-link> +        </xsl:when> +        <xsl:when test="$href != ''"> +          <xsl:choose> +            <xsl:when test="$xep.extensions != 0"> +              <fo:basic-link external-destination="url({$href})" +                             xsl:use-attribute-sets="olink.properties"> +                <xsl:copy-of select="$hottext"/> +              </fo:basic-link> +              <xsl:copy-of select="$olink.page.citation"/> +              <xsl:copy-of select="$olink.docname.citation"/> +            </xsl:when> +            <xsl:when test="$axf.extensions != 0"> +              <fo:basic-link external-destination="{$href}" +                             xsl:use-attribute-sets="olink.properties"> +                <xsl:copy-of select="$hottext"/> +              </fo:basic-link> +              <xsl:copy-of select="$olink.page.citation"/> +              <xsl:copy-of select="$olink.docname.citation"/> +            </xsl:when> +            <xsl:otherwise> +              <fo:basic-link external-destination="{$href}" +                             xsl:use-attribute-sets="olink.properties"> +                <xsl:copy-of select="$hottext"/> +              </fo:basic-link> +              <xsl:copy-of select="$olink.page.citation"/> +              <xsl:copy-of select="$olink.docname.citation"/> +            </xsl:otherwise> +          </xsl:choose> +        </xsl:when> +        <xsl:otherwise> +          <xsl:copy-of select="$hottext"/> +          <xsl:copy-of select="$olink.page.citation"/> +          <xsl:copy-of select="$olink.docname.citation"/> +        </xsl:otherwise> +      </xsl:choose> +    </xsl:when> + +    <!-- olink never implemented in FO for old olink entity syntax --> +    <xsl:otherwise> +      <xsl:apply-templates/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="insert.olink.docname.markup"> +  <xsl:param name="docname" select="''"/> +   +  <fo:inline font-style="italic"> +    <xsl:value-of select="$docname"/> +  </fo:inline> + +</xsl:template> + +<!-- This prevents error message when processing olinks with xrefstyle --> +<xsl:template match="olink" mode="object.xref.template"/> + + +<xsl:template name="olink.as.linkend"> +  <xsl:param name="olink.key" select="''"/> +  <xsl:param name="olink.lang" select="''"/> +  <xsl:param name="target.database" select="NotANode"/> + +  <xsl:variable name="targetdoc"> +    <xsl:value-of select="substring-before($olink.key, '/')"/> +  </xsl:variable> + +  <xsl:variable name="targetptr"> +    <xsl:value-of  +       select="substring-before(substring-after($olink.key, '/'), '/')"/> +  </xsl:variable> + +  <xsl:variable name="target.lang"> +    <xsl:variable name="candidate"> +      <xsl:for-each select="$target.database" > +        <xsl:value-of  +                  select="key('targetptr-key', $olink.key)/@lang" /> +      </xsl:for-each> +    </xsl:variable> +    <xsl:choose> +      <xsl:when test="$candidate != ''"> +        <xsl:value-of select="$candidate"/> +      </xsl:when> +      <xsl:otherwise> +        <xsl:value-of select="$olink.lang"/> +      </xsl:otherwise> +    </xsl:choose> +  </xsl:variable> + +  <xsl:if test="$current.docid = $targetdoc and  +                $olink.lang = $target.lang"> +    <xsl:variable name="targets" select="key('id',$targetptr)"/> +    <xsl:variable name="target" select="$targets[1]"/> +    <xsl:if test="$target"> +      <xsl:value-of select="$targetptr"/> +    </xsl:if> +  </xsl:if> + +</xsl:template> + + +<xsl:template name="olink.outline"> +  <xsl:param name="outline.base.uri"/> +  <xsl:param name="localinfo"/> +  <xsl:param name="return" select="href"/> + +  <xsl:message terminate="yes">Fatal error: olink.outline template: what is this supposed to do?</xsl:message> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="title.xref"> +  <xsl:param name="target" select="."/> +  <xsl:choose> +    <xsl:when test="local-name($target) = 'figure' +                    or local-name($target) = 'example' +                    or local-name($target) = 'equation' +                    or local-name($target) = 'table' +                    or local-name($target) = 'dedication' +                    or local-name($target) = 'preface' +                    or local-name($target) = 'bibliography' +                    or local-name($target) = 'glossary' +                    or local-name($target) = 'index' +                    or local-name($target) = 'setindex' +                    or local-name($target) = 'colophon'"> +      <xsl:call-template name="gentext.startquote"/> +      <xsl:apply-templates select="$target" mode="title.markup"/> +      <xsl:call-template name="gentext.endquote"/> +    </xsl:when> +    <xsl:otherwise> +      <fo:inline font-style="italic"> +        <xsl:apply-templates select="$target" mode="title.markup"/> +      </fo:inline> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template name="number.xref"> +  <xsl:param name="target" select="."/> +  <xsl:apply-templates select="$target" mode="label.markup"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="xref.xreflabel"> +  <!-- called to process an xreflabel...you might use this to make  --> +  <!-- xreflabels come out in the right font for different targets, --> +  <!-- for example. --> +  <xsl:param name="target" select="."/> +  <xsl:value-of select="$target/@xreflabel"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="title" mode="xref"> +  <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="command" mode="xref"> +  <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="function" mode="xref"> +  <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="*" mode="page.citation"> +  <xsl:param name="id" select="'???'"/> + +  <fo:basic-link internal-destination="{$id}" +                 xsl:use-attribute-sets="xref.properties"> +    <fo:inline keep-together.within-line="always"> +      <xsl:call-template name="substitute-markup"> +        <xsl:with-param name="template"> +          <xsl:call-template name="gentext.template"> +            <xsl:with-param name="name" select="'page.citation'"/> +            <xsl:with-param name="context" select="'xref'"/> +          </xsl:call-template> +        </xsl:with-param> +      </xsl:call-template> +    </fo:inline> +  </fo:basic-link> +</xsl:template> + +<xsl:template match="*" mode="pagenumber.markup"> +  <xsl:variable name="id"> +    <xsl:call-template name="object.id"/> +  </xsl:variable> +  <fo:page-number-citation ref-id="{$id}"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="insert.title.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="title"/> + +  <xsl:choose> +    <!-- FIXME: what about the case where titleabbrev is inside the info? --> +    <xsl:when test="$purpose = 'xref' and titleabbrev"> +      <xsl:apply-templates select="." mode="titleabbrev.markup"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$title"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="chapter|appendix" mode="insert.title.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="title"/> + +  <xsl:choose> +    <xsl:when test="$purpose = 'xref'"> +      <fo:inline font-style="italic"> +        <xsl:copy-of select="$title"/> +      </fo:inline> +    </xsl:when> +    <xsl:otherwise> +      <xsl:copy-of select="$title"/> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="insert.subtitle.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="subtitle"/> + +  <xsl:copy-of select="$subtitle"/> +</xsl:template> + +<xsl:template match="*" mode="insert.label.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="label"/> + +  <xsl:copy-of select="$label"/> +</xsl:template> + +<xsl:template match="*" mode="insert.pagenumber.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="pagenumber"/> + +  <xsl:copy-of select="$pagenumber"/> +</xsl:template> + +<xsl:template match="*" mode="insert.direction.markup"> +  <xsl:param name="purpose"/> +  <xsl:param name="xrefstyle"/> +  <xsl:param name="direction"/> + +  <xsl:copy-of select="$direction"/> +</xsl:template> + +<xsl:template match="olink" mode="pagenumber.markup"> +  <!-- Local olinks can use page-citation --> +  <xsl:variable name="targetdoc.att" select="@targetdoc"/> +  <xsl:variable name="targetptr.att" select="@targetptr"/> + +  <xsl:variable name="olink.lang"> +    <xsl:call-template name="l10n.language"> +      <xsl:with-param name="xref-context" select="true()"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="target.database.filename"> +    <xsl:call-template name="select.target.database"> +      <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> +      <xsl:with-param name="targetptr.att" select="$targetptr.att"/> +      <xsl:with-param name="olink.lang" select="$olink.lang"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:variable name="target.database"  +      select="document($target.database.filename, /)"/> + +  <xsl:if test="$olink.debug != 0"> +    <xsl:message> +      <xsl:text>Olink debug: root element of target.database is '</xsl:text> +      <xsl:value-of select="local-name($target.database/*[1])"/> +      <xsl:text>'.</xsl:text> +    </xsl:message> +  </xsl:if> + +  <xsl:variable name="olink.key"> +    <xsl:call-template name="select.olink.key"> +      <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> +      <xsl:with-param name="targetptr.att" select="$targetptr.att"/> +      <xsl:with-param name="olink.lang" select="$olink.lang"/> +      <xsl:with-param name="target.database" select="$target.database"/> +    </xsl:call-template> +  </xsl:variable> + +  <!-- Olink that points to internal id can be a link --> +  <xsl:variable name="linkend"> +    <xsl:call-template name="olink.as.linkend"> +      <xsl:with-param name="olink.key" select="$olink.key"/> +      <xsl:with-param name="olink.lang" select="$olink.lang"/> +      <xsl:with-param name="target.database" select="$target.database"/> +    </xsl:call-template> +  </xsl:variable> + +  <xsl:choose> +    <xsl:when test="$linkend != ''"> +      <fo:page-number-citation ref-id="{$linkend}"/> +    </xsl:when> +    <xsl:otherwise> +      <xsl:message> +        <xsl:text>Olink error: no page number linkend for local olink '</xsl:text> +        <xsl:value-of select="$olink.key"/> +        <xsl:text>'</xsl:text> +      </xsl:message> +    </xsl:otherwise> +  </xsl:choose> +</xsl:template> + +</xsl:stylesheet>  | 
